Merge branch 'master' of github.com:radicallyopensecurity/pentext
This commit is contained in:
7
.gitignore
vendored
Normal file
7
.gitignore
vendored
Normal file
@@ -0,0 +1,7 @@
|
||||
xml/PenText.xpr
|
||||
# (Emacs) (temporary) files
|
||||
.#*
|
||||
\#*#
|
||||
.projectile
|
||||
# Compiled Python stuff
|
||||
*.pyc
|
||||
@@ -140,13 +140,16 @@ def list_issues(gitserver, options):
|
||||
"""
|
||||
Lists all issues for options['issues']
|
||||
"""
|
||||
for issue in gitserver.projects.get(options['issues']).issues.list(all=True):
|
||||
if issue.state != 'opened' and not options['closed']:
|
||||
continue
|
||||
if 'finding' in issue.labels:
|
||||
add_finding(issue, options)
|
||||
if 'non-finding' in issue.labels:
|
||||
add_non_finding(issue, options)
|
||||
try:
|
||||
for issue in gitserver.projects.get(options['issues']).issues.list(all=True):
|
||||
if issue.state == 'closed' and not options['closed']:
|
||||
continue
|
||||
if 'finding' in issue.labels:
|
||||
add_finding(issue, options)
|
||||
if 'non-finding' in issue.labels:
|
||||
add_non_finding(issue, options)
|
||||
except:
|
||||
print_error('could not find any issues', -1)
|
||||
|
||||
|
||||
def list_projects(gitserver, options):
|
||||
|
||||
@@ -7,13 +7,127 @@
|
||||
# Configuration:
|
||||
# See the various handlers in bash/
|
||||
#
|
||||
# Usage:
|
||||
# build
|
||||
# Detailed line 1
|
||||
# Detailed line 2
|
||||
# Detailed line 3
|
||||
#
|
||||
# respond
|
||||
# Detailed line 11
|
||||
# Detailed line 22
|
||||
# Detailed line 33
|
||||
#
|
||||
#
|
||||
# Commands:
|
||||
# hubot build <repo> <target> - Builds a .pdf file from <target> in <repo>
|
||||
# hubot convert <repo> <target> - Builds a .xml file from <target> in <repo>
|
||||
# hubot invoice <repo> <target> - Builds pdf invoice from quote
|
||||
# hubot quickscope <repo> <namespace> [branch=MASTER] - Converts quickscope into quotation
|
||||
# hubot startpentest <name> - Bootstraps a pentest
|
||||
# hubot startquote <name> - Bootstraps a quotation
|
||||
# hubot validate <parms..> - Validates a report/quotation
|
||||
# hubot usage [command] - Displays usage information for command. If no command is specified, supported commands are displayed.
|
||||
#
|
||||
|
||||
# Author:
|
||||
# Peter Mosmans
|
||||
# John Sinteur
|
||||
# Daniel Attevelt
|
||||
#
|
||||
# This is part of the PenText framework
|
||||
#
|
||||
|
||||
admins = ['admin']
|
||||
USAGE_LABEL = '# Usage:'
|
||||
|
||||
Fs = require 'fs'
|
||||
Path = require 'path'
|
||||
|
||||
admins = ['peter']
|
||||
|
||||
###
|
||||
This will initialise the usage information for the chatops command used in the pentext framework
|
||||
It will parse the file comment sections in search of usage information. See above for an example
|
||||
|
||||
! This section should always be above the commands section and should always be terminated by two consecutive #s !
|
||||
! Only single word commands are supported !
|
||||
|
||||
robot gets a new property .usages which can be used later on
|
||||
###
|
||||
init_usage = (robot) ->
|
||||
robot.usages = []
|
||||
|
||||
load_scripts(robot)
|
||||
|
||||
###
|
||||
This will load all the scripts in the same folder as this one. It will then proceed
|
||||
to parsing those scripts in order to extract the rosbot command usage information
|
||||
###
|
||||
load_scripts = (robot) ->
|
||||
if Fs.existsSync(__dirname)
|
||||
for file in Fs.readdirSync(__dirname).sort()
|
||||
fullPath = Path.join __dirname, file
|
||||
robot.logger.info "File: " + fullPath
|
||||
|
||||
body = Fs.readFileSync fullPath, 'utf-8'
|
||||
parse_scripts(robot, body)
|
||||
|
||||
###
|
||||
This function will parse the script for usage information.
|
||||
It will do so by looping through every comment line until it hits the # Usage: label
|
||||
Then it will start to look for a command tag that is identified by:
|
||||
# (3 spaces) <command>. The will let the function know it's dealing with a command identifiers.
|
||||
# (5 spaces) <infoline> lets the function know it's dealing with info line that should go together with the previously encountered command.
|
||||
|
||||
The sequence is broken by two sequential empty comment lines. e.g.:
|
||||
#
|
||||
#
|
||||
|
||||
###
|
||||
parse_scripts = (robot, body) ->
|
||||
parsing_usage = false
|
||||
current_command = null
|
||||
|
||||
# https://regex101.com
|
||||
cmd_regex = /^#[ ]{3}[\S]+/i
|
||||
info_regex = /^#[ ]{5}[\S]+/i
|
||||
|
||||
# Loop through each comment line until there is none.
|
||||
for line in body.split "\n"
|
||||
break unless line[0] is '#' or line.substr(0, 2) is '//'
|
||||
|
||||
# Determine if we've reached the Usage: tag
|
||||
if line.indexOf(USAGE_LABEL) != -1
|
||||
parsing_usage = true
|
||||
|
||||
if parsing_usage
|
||||
# Pre-cleaning ...
|
||||
cleanedLine = line.replace(/^(#|\/\/)\s?/, "").trim()
|
||||
|
||||
# Are we dealing with a command?
|
||||
if line.match cmd_regex
|
||||
current_command = cleanedLine
|
||||
robot.usages[current_command] = []
|
||||
|
||||
# Are we dealing with an info line ?
|
||||
if line.match info_regex
|
||||
if not robot.usages[current_command]
|
||||
robot.logger.debug "Error parsing chatpos usage info: found info line, but no command line"
|
||||
else
|
||||
robot.usages[current_command].push cleanedLine
|
||||
|
||||
# Detects two sequential #'s and quits parsing usage when it does
|
||||
if cleanedLine.length == 0
|
||||
if current_command == null
|
||||
parsing_usage = false
|
||||
else
|
||||
current_command = null
|
||||
|
||||
# Sanity check
|
||||
robot.logger.info "--- Following usage information parsed ----"
|
||||
for command, lines of robot.usages
|
||||
for index, line of lines
|
||||
robot.logger.info "* #{command} : #{line}"
|
||||
|
||||
module.exports = (robot) ->
|
||||
run_cmd = (cmd, args, cb ) ->
|
||||
@@ -22,6 +136,13 @@ module.exports = (robot) ->
|
||||
child.stdout.on "data", (buffer) -> cb buffer.toString()
|
||||
child.stderr.on "data", (buffer) -> cb buffer.toString()
|
||||
|
||||
init_usage(robot)
|
||||
|
||||
|
||||
# ***************************************************************************
|
||||
# ChatOps command handlers
|
||||
# ***************************************************************************
|
||||
|
||||
robot.respond /build (.*)/i, id:'chatops.build', (msg) ->
|
||||
msg.match[0] = msg.match[0].replace(/^[a-z0-9]+$/i);
|
||||
msg.match.shift();
|
||||
@@ -93,3 +214,30 @@ module.exports = (robot) ->
|
||||
args = msg.match[0].split(" ");
|
||||
cmd = "bash/handler_validate";
|
||||
run_cmd cmd, args, (text) -> msg.send text.replace("\n","");
|
||||
|
||||
|
||||
# Handler for the usage command.
|
||||
# Note that the regex option group (.*) also captures the space after the command
|
||||
# This allows for the case when there is no command specified, supported commands can be displayed
|
||||
robot.respond /usage(.*)/i, id:'chatops.usage', (msg) ->
|
||||
msg.match[0] = msg.match[0].replace(/^[a-z0-9]+$/i);
|
||||
msg.match.shift();
|
||||
args = msg.match[0].trim().split(" ");
|
||||
command = args[0]
|
||||
|
||||
# If not command is provided, return information on which commands can be handled
|
||||
if command.trim().length == 0
|
||||
msg.send "I can provide usage information for the following commands:"
|
||||
for command of robot.usages
|
||||
msg.send command
|
||||
msg.send "Issue the command: usage <command> for usage information for this command"
|
||||
return
|
||||
|
||||
# This deals when unsupported commands
|
||||
if not robot.usages[command]
|
||||
msg.send "I have no usage information for: " + command
|
||||
return
|
||||
|
||||
# All odd case have been dealt with, let's get down to business
|
||||
for index, line of robot.usages[command]
|
||||
msg.send line
|
||||
1141
xml/RELEASE_NOTES.html
Normal file
1141
xml/RELEASE_NOTES.html
Normal file
File diff suppressed because it is too large
Load Diff
@@ -1,6 +1,80 @@
|
||||
RELEASE NOTES
|
||||
=============
|
||||
|
||||
August 25th, 2016
|
||||
-----------------
|
||||
|
||||
### More configurable contract snippet selection
|
||||
|
||||
You can now configure contract types and the snippets they use in `snippets/snippetselection.xml`. The selected snippets will be used when generating the contract from `contract_info.xml` (see Aug 19 release notes). If you define no snippet group, all snippets will be generated one after the other in the resulting contract. If you do define snippet groups, these can then be referenced from the xslt so that you generate a group at a time (useful if there should be something in between them or if they go in different sections or something like that). In due time this will also be generated for offertes (so as to configure offertes generated from the `quickscope.xml`)
|
||||
|
||||
### Generic Document footnotes
|
||||
|
||||
You can now use footnotes (`<p>This is a nice<fnref>And by nice I mean that it contains a footnote</fnref> sentence.</p>`) in generic documents. In due time these will also be added to pentest reports and offertes.
|
||||
|
||||
### Generic Document bibliography
|
||||
|
||||
You can now use bibliography references and entries in generic documents. In due time these will also be added to pentest reports and offertes.
|
||||
|
||||
#### Example:
|
||||
|
||||
<p>This is a nice book<bibref ref="bib1"/>.</p>`
|
||||
|
||||
|
||||
<section id="bibliography">
|
||||
<title>Bibliography</title>
|
||||
<biblioentries>
|
||||
<biblioentry role="book" id="bib1">
|
||||
<author>
|
||||
<surname>Guy</surname>
|
||||
<firstname>Some</firstname>
|
||||
</author>
|
||||
<title>Books are cool</title>
|
||||
<info>pages 207–228</info>
|
||||
<publisher>
|
||||
<name>We Publish Everything</name>
|
||||
<location>Amsterdam</location>
|
||||
</publisher>
|
||||
<pubdate>2016</pubdate>
|
||||
<link>
|
||||
<a href="http://www.noqualitycontrol.com/someguysbook">http://www.noqualitycontrol.com/someguysbook</a>
|
||||
<accessed>2016-08-25</accessed>
|
||||
</link>
|
||||
</biblioentry>
|
||||
|
||||
|
||||
|
||||
August 19th, 2016
|
||||
-----------------
|
||||
|
||||
### Contracts
|
||||
|
||||
Added a contract document type; it works as follows:
|
||||
|
||||
1. fill out the fields (elements) in contract_info.xml
|
||||
2. Create contract.xml from contract_info.xml using info2contract.xsl
|
||||
3. contract.xml --> contract.pdf (using generate_contract.xsl + fop)
|
||||
|
||||
In general there shoudl be no need to edit contract.xml, it is an intermediate document. The idea is to go straight from contract_info.xml to contract.pdf (in two steps)
|
||||
|
||||
|
||||
July 30, 2016
|
||||
-------------
|
||||
|
||||
### Finding status
|
||||
|
||||
New feature for retests: finding status to indicate if, in context of a follow-up pentest, a finding is new, resolved, still unresolved or not retested.
|
||||
|
||||
The `<finding>` element now has an optional `@status` attribute. Possible values are:
|
||||
|
||||
- `new`
|
||||
- `unresolved`
|
||||
- `resolved`
|
||||
- `not_retested`
|
||||
|
||||
The `<generate_findings/>` element now likewise has this optional `@status` attribute with the same possible values. You can add it to generate a finding summary table containing only the findings with a specific status.
|
||||
|
||||
|
||||
June 15, 2016
|
||||
-------------
|
||||
|
||||
|
||||
@@ -32,6 +32,7 @@
|
||||
<xs:element ref="iban"/>
|
||||
</xs:sequence>
|
||||
<xs:attribute ref="xml:base"/>
|
||||
<xs:attribute ref="xml:lang"/>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
@@ -99,6 +100,7 @@
|
||||
<xs:element ref="vat_no"/>
|
||||
</xs:sequence>
|
||||
<xs:attribute ref="xml:base"/>
|
||||
<xs:attribute ref="xml:lang"/>
|
||||
<xs:attribute name="id" type="xs:ID"/>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
@@ -108,7 +110,6 @@
|
||||
|
||||
<xs:element name="duration" type="xs:nonNegativeInteger"/>
|
||||
<xs:element name="test_planning" type="xs:string"/>
|
||||
<xs:element name="report_writing" type="xs:string"/>
|
||||
<xs:element name="report_due" type="xs:string"/>
|
||||
<xs:element name="nature" type="xs:string"/>
|
||||
<xs:element name="type">
|
||||
@@ -219,7 +220,7 @@
|
||||
<xs:attribute ref="xml:base"/>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
|
||||
<xs:element name="version_history">
|
||||
<xs:complexType>
|
||||
<xs:sequence>
|
||||
@@ -294,6 +295,23 @@
|
||||
</xs:simpleContent>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
<xs:element name="bibref">
|
||||
<xs:complexType>
|
||||
<xs:simpleContent>
|
||||
<xs:extension base="xs:string">
|
||||
<xs:attribute name="ref" use="optional" type="xs:anyURI"/>
|
||||
</xs:extension>
|
||||
</xs:simpleContent>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
<xs:element name="fnref">
|
||||
<xs:complexType mixed="true">
|
||||
<xs:choice maxOccurs="unbounded">
|
||||
<xs:group ref="inline-except-fnref"/>
|
||||
<xs:group ref="placeholders"/>
|
||||
</xs:choice>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
<xs:element name="b">
|
||||
<xs:complexType mixed="true">
|
||||
<xs:choice maxOccurs="unbounded">
|
||||
@@ -350,6 +368,79 @@
|
||||
</xs:choice>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
<xs:element name="biblioentries">
|
||||
<xs:complexType>
|
||||
<xs:sequence minOccurs="1" maxOccurs="unbounded">
|
||||
<xs:element ref="biblioentry"></xs:element>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
<xs:element name="biblioentry">
|
||||
<xs:complexType>
|
||||
<xs:sequence>
|
||||
<xs:element ref="author" minOccurs="0" maxOccurs="unbounded"/>
|
||||
<xs:element ref="title"/>
|
||||
<xs:choice>
|
||||
<xs:element ref="journal" minOccurs="0"/>
|
||||
<xs:element ref="website" minOccurs="0"/>
|
||||
</xs:choice>
|
||||
<xs:element ref="info" minOccurs="0"/>
|
||||
<xs:element ref="publisher" minOccurs="0"/>
|
||||
<xs:element ref="pubdate" minOccurs="0"/>
|
||||
<xs:element ref="link" minOccurs="0"/>
|
||||
</xs:sequence>
|
||||
<xs:attribute ref="role"/>
|
||||
<xs:attribute name="id" use="required" type="xs:ID"/>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
<xs:attribute name="role">
|
||||
<xs:simpleType>
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:enumeration value="book"/>
|
||||
<xs:enumeration value="article"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
</xs:attribute>
|
||||
|
||||
<xs:element name="author">
|
||||
<xs:complexType>
|
||||
<xs:sequence>
|
||||
<xs:element ref="surname" minOccurs="0" maxOccurs="1"/>
|
||||
<xs:element ref="firstname" minOccurs="0" maxOccurs="1"/>
|
||||
<xs:element ref="org" minOccurs="0" maxOccurs="1"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
<xs:element name="publisher">
|
||||
<xs:complexType>
|
||||
<xs:sequence>
|
||||
<xs:element ref="name" minOccurs="0" maxOccurs="1"/>
|
||||
<xs:element ref="location" minOccurs="0" maxOccurs="1"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
<xs:element name="link">
|
||||
<xs:complexType>
|
||||
<xs:sequence>
|
||||
<xs:element ref="a" minOccurs="1" maxOccurs="1"/>
|
||||
<xs:element ref="accessed" minOccurs="0" maxOccurs="1"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
<xs:element name="surname" type="xs:string"/>
|
||||
<xs:element name="firstname" type="xs:string"/>
|
||||
<xs:element name="org" type="xs:string"/>
|
||||
<xs:element name="journal" type="xs:string"/>
|
||||
<xs:element name="info" type="xs:string"/>
|
||||
<xs:element name="location" type="xs:string"/>
|
||||
<xs:element name="pubdate" type="xs:string"/>
|
||||
<xs:element name="accessed" type="xs:date"/>
|
||||
|
||||
<!-- attributes -->
|
||||
<xs:attribute name="break">
|
||||
@@ -380,6 +471,21 @@
|
||||
<xs:element minOccurs="0" maxOccurs="unbounded" ref="monospace"/>
|
||||
<xs:element minOccurs="0" maxOccurs="unbounded" ref="sup"/>
|
||||
<xs:element minOccurs="0" maxOccurs="unbounded" ref="sub"/>
|
||||
<xs:element minOccurs="0" maxOccurs="unbounded" ref="bibref"/>
|
||||
<xs:element minOccurs="0" maxOccurs="unbounded" ref="fnref"/>
|
||||
</xs:choice>
|
||||
</xs:group>
|
||||
<xs:group name="inline-except-fnref">
|
||||
<xs:choice>
|
||||
<xs:element minOccurs="0" maxOccurs="unbounded" ref="a"/>
|
||||
<xs:element minOccurs="0" maxOccurs="unbounded" ref="br"/>
|
||||
<xs:element minOccurs="0" maxOccurs="unbounded" ref="i"/>
|
||||
<xs:element minOccurs="0" maxOccurs="unbounded" ref="b"/>
|
||||
<xs:element minOccurs="0" maxOccurs="unbounded" ref="u"/>
|
||||
<xs:element minOccurs="0" maxOccurs="unbounded" ref="monospace"/>
|
||||
<xs:element minOccurs="0" maxOccurs="unbounded" ref="sup"/>
|
||||
<xs:element minOccurs="0" maxOccurs="unbounded" ref="sub"/>
|
||||
<xs:element minOccurs="0" maxOccurs="unbounded" ref="bibref"/>
|
||||
</xs:choice>
|
||||
</xs:group>
|
||||
<xs:group name="inline-except-b">
|
||||
@@ -391,6 +497,8 @@
|
||||
<xs:element minOccurs="0" maxOccurs="unbounded" ref="monospace"/>
|
||||
<xs:element minOccurs="0" maxOccurs="unbounded" ref="sup"/>
|
||||
<xs:element minOccurs="0" maxOccurs="unbounded" ref="sub"/>
|
||||
<xs:element minOccurs="0" maxOccurs="unbounded" ref="bibref"/>
|
||||
<xs:element minOccurs="0" maxOccurs="unbounded" ref="fnref"/>
|
||||
</xs:choice>
|
||||
</xs:group>
|
||||
<xs:group name="inline-except-sup">
|
||||
@@ -402,6 +510,8 @@
|
||||
<xs:element minOccurs="0" maxOccurs="unbounded" ref="b"/>
|
||||
<xs:element minOccurs="0" maxOccurs="unbounded" ref="monospace"/>
|
||||
<xs:element minOccurs="0" maxOccurs="unbounded" ref="sub"/>
|
||||
<xs:element minOccurs="0" maxOccurs="unbounded" ref="bibref"/>
|
||||
<xs:element minOccurs="0" maxOccurs="unbounded" ref="fnref"/>
|
||||
</xs:choice>
|
||||
</xs:group>
|
||||
<xs:group name="inline-except-sub">
|
||||
@@ -413,6 +523,8 @@
|
||||
<xs:element minOccurs="0" maxOccurs="unbounded" ref="b"/>
|
||||
<xs:element minOccurs="0" maxOccurs="unbounded" ref="monospace"/>
|
||||
<xs:element minOccurs="0" maxOccurs="unbounded" ref="sup"/>
|
||||
<xs:element minOccurs="0" maxOccurs="unbounded" ref="bibref"/>
|
||||
<xs:element minOccurs="0" maxOccurs="unbounded" ref="fnref"/>
|
||||
</xs:choice>
|
||||
</xs:group>
|
||||
<xs:group name="inline-except-i">
|
||||
@@ -424,6 +536,8 @@
|
||||
<xs:element minOccurs="0" maxOccurs="unbounded" ref="monospace"/>
|
||||
<xs:element minOccurs="0" maxOccurs="unbounded" ref="sup"/>
|
||||
<xs:element minOccurs="0" maxOccurs="unbounded" ref="sub"/>
|
||||
<xs:element minOccurs="0" maxOccurs="unbounded" ref="bibref"/>
|
||||
<xs:element minOccurs="0" maxOccurs="unbounded" ref="fnref"/>
|
||||
</xs:choice>
|
||||
</xs:group>
|
||||
<xs:group name="inline-except-u">
|
||||
@@ -435,6 +549,8 @@
|
||||
<xs:element minOccurs="0" maxOccurs="unbounded" ref="monospace"/>
|
||||
<xs:element minOccurs="0" maxOccurs="unbounded" ref="sup"/>
|
||||
<xs:element minOccurs="0" maxOccurs="unbounded" ref="sub"/>
|
||||
<xs:element minOccurs="0" maxOccurs="unbounded" ref="bibref"/>
|
||||
<xs:element minOccurs="0" maxOccurs="unbounded" ref="fnref"/>
|
||||
</xs:choice>
|
||||
</xs:group>
|
||||
<xs:group name="inline-except-monospace">
|
||||
@@ -446,6 +562,8 @@
|
||||
<xs:element minOccurs="0" maxOccurs="unbounded" ref="u"/>
|
||||
<xs:element minOccurs="0" maxOccurs="unbounded" ref="sup"/>
|
||||
<xs:element minOccurs="0" maxOccurs="unbounded" ref="sub"/>
|
||||
<xs:element minOccurs="0" maxOccurs="unbounded" ref="bibref"/>
|
||||
<xs:element minOccurs="0" maxOccurs="unbounded" ref="fnref"/>
|
||||
</xs:choice>
|
||||
</xs:group>
|
||||
|
||||
|
||||
146
xml/dtd/contract_info.xsd
Normal file
146
xml/dtd/contract_info.xsd
Normal file
@@ -0,0 +1,146 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
|
||||
<xs:import namespace="http://www.w3.org/XML/1998/namespace"
|
||||
schemaLocation="http://www.w3.org/2001/xml.xsd"/>
|
||||
<xs:import namespace="http://www.w3.org/2001/XInclude"
|
||||
schemaLocation="http://www.w3.org/2001/XInclude/XInclude.xsd"/>
|
||||
<xs:include schemaLocation="common.xsd"/>
|
||||
<xs:element name="contract_info">
|
||||
<xs:complexType>
|
||||
<xs:sequence>
|
||||
<xs:element ref="company"/>
|
||||
<xs:element ref="scope"/>
|
||||
<xs:element ref="contractor"/>
|
||||
<xs:element ref="work"/>
|
||||
</xs:sequence>
|
||||
<xs:attribute ref="xml:lang"/>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
<xs:element name="scope">
|
||||
<xs:complexType>
|
||||
<xs:sequence>
|
||||
<xs:element ref="contract_type"/>
|
||||
<xs:element ref="engagement_description"/>
|
||||
<xs:element ref="secondpartyrole"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
<xs:element name="contract_type">
|
||||
<xs:simpleType>
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:enumeration value="single_engagement"/>
|
||||
<xs:enumeration value="fixed_term"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
</xs:element>
|
||||
<xs:element name="engagement_description" type="xs:string"/>
|
||||
<xs:element name="secondpartyrole" type="xs:string"/>
|
||||
<xs:element name="contractor">
|
||||
<xs:complexType>
|
||||
<xs:sequence>
|
||||
<xs:element ref="name"/>
|
||||
<xs:element ref="ctcompany"/>
|
||||
<xs:element ref="address"/>
|
||||
<xs:element ref="postal_code"/>
|
||||
<xs:element ref="city"/>
|
||||
<xs:element ref="country"/>
|
||||
<xs:element ref="email"/>
|
||||
<xs:element ref="hourly_fee"/>
|
||||
</xs:sequence>
|
||||
<xs:attribute name="sex" use="required">
|
||||
<xs:simpleType>
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:enumeration value="F"/>
|
||||
<xs:enumeration value="M"/>
|
||||
<xs:enumeration value="O"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
</xs:attribute>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
<xs:element name="ctcompany" type="xs:string"/>
|
||||
<xs:element name="work">
|
||||
<xs:complexType>
|
||||
<xs:sequence>
|
||||
<xs:element ref="activities"/>
|
||||
<xs:element ref="start_date"/>
|
||||
<xs:element ref="end_date"/>
|
||||
<xs:element ref="planning"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
<xs:element name="activities">
|
||||
<xs:complexType>
|
||||
<xs:sequence>
|
||||
<xs:element maxOccurs="unbounded" ref="activity"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
<xs:element name="activity" type="xs:string"/>
|
||||
<xs:element name="start_date" type="xs:date"/>
|
||||
<xs:element name="end_date" type="xs:date"/>
|
||||
<xs:element name="planning">
|
||||
<xs:complexType>
|
||||
<xs:sequence>
|
||||
<xs:element ref="hours"/>
|
||||
<xs:element ref="per"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
<xs:element name="hours" type="xs:integer"/>
|
||||
<xs:element name="per">
|
||||
<xs:simpleType>
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:enumeration value="week"/>
|
||||
<xs:enumeration value="month"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
</xs:element>
|
||||
<xs:element name="hourly_fee">
|
||||
<xs:complexType>
|
||||
<xs:simpleContent>
|
||||
<xs:extension base="xs:integer">
|
||||
<xs:attribute name="denomination" use="required">
|
||||
<xs:simpleType>
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:enumeration value="eur"/>
|
||||
<xs:enumeration value="gbp"/>
|
||||
<xs:enumeration value="usd"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
</xs:attribute>
|
||||
</xs:extension>
|
||||
</xs:simpleContent>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
<xs:group name="placeholders">
|
||||
<xs:choice>
|
||||
<xs:element name="company_long"/>
|
||||
<xs:element name="company_short"/>
|
||||
<xs:element name="company_address"/>
|
||||
<xs:element name="company_postalcode"/>
|
||||
<xs:element name="company_city"/>
|
||||
<xs:element name="company_country"/>
|
||||
<xs:element name="company_poc1"/>
|
||||
<xs:element name="company_email"/>
|
||||
<xs:element name="engagement_description"/>
|
||||
<xs:element name="secondpartyrole"/>
|
||||
<xs:element name="contract_start_date"/>
|
||||
<xs:element name="contract_end_date"/>
|
||||
<xs:element name="contract_period"/>
|
||||
<xs:element name="contract_total_fee"/>
|
||||
<xs:element name="contract_planned_hours"/>
|
||||
<xs:element name="contract_period_unit"/>
|
||||
<xs:element name="contract_activities"/>
|
||||
<xs:element name="contractor_name"/>
|
||||
<xs:element name="contractor_company"/>
|
||||
<xs:element name="contractor_address"/>
|
||||
<xs:element name="contractor_postalcode"/>
|
||||
<xs:element name="contractor_city"/>
|
||||
<xs:element name="contractor_country"/>
|
||||
<xs:element name="contractor_email"/>
|
||||
<xs:element name="contractor_hourly_fee"/>
|
||||
</xs:choice>
|
||||
</xs:group>
|
||||
</xs:schema>
|
||||
@@ -1,20 +1,22 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
|
||||
<xs:import namespace="http://www.w3.org/XML/1998/namespace" schemaLocation="http://www.w3.org/2001/xml.xsd" />
|
||||
<xs:import namespace="http://www.w3.org/2001/XInclude" schemaLocation="http://www.w3.org/2001/XInclude/XInclude.xsd"/>
|
||||
<xs:import namespace="http://www.w3.org/XML/1998/namespace"
|
||||
schemaLocation="http://www.w3.org/2001/xml.xsd"/>
|
||||
<xs:import namespace="http://www.w3.org/2001/XInclude"
|
||||
schemaLocation="http://www.w3.org/2001/XInclude/XInclude.xsd"/>
|
||||
<xs:include schemaLocation="common.xsd"/>
|
||||
|
||||
|
||||
<xs:element name="generic_document">
|
||||
<xs:complexType>
|
||||
<xs:sequence>
|
||||
<xs:element ref="meta"/>
|
||||
<xs:element ref="generate_index"/>
|
||||
<xs:element ref="section" maxOccurs="unbounded"/>
|
||||
<xs:element ref="appendix" maxOccurs="unbounded"/>
|
||||
<xs:element ref="appendix" minOccurs="0" maxOccurs="unbounded"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
|
||||
<xs:element name="meta">
|
||||
<xs:complexType>
|
||||
<xs:sequence>
|
||||
@@ -27,9 +29,9 @@
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
|
||||
<xs:element name="subtitle" type="xs:string"/>
|
||||
|
||||
|
||||
<xs:element name="collaborators">
|
||||
<xs:complexType>
|
||||
<xs:sequence>
|
||||
@@ -38,7 +40,7 @@
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
|
||||
<xs:element name="reviewers">
|
||||
<xs:complexType>
|
||||
<xs:sequence>
|
||||
@@ -46,9 +48,9 @@
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
|
||||
<xs:element name="reviewer" type="xs:string"/>
|
||||
|
||||
|
||||
<xs:element name="approver">
|
||||
<xs:complexType>
|
||||
<xs:sequence>
|
||||
@@ -57,10 +59,10 @@
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
|
||||
<xs:element name="bio" type="xs:string"/>
|
||||
<xs:element name="classification" type="xs:NCName"/>
|
||||
|
||||
|
||||
<xs:element name="section">
|
||||
<xs:complexType>
|
||||
<xs:sequence>
|
||||
@@ -75,6 +77,7 @@
|
||||
<xs:element ref="ol"/>
|
||||
<xs:element ref="img"/>
|
||||
<xs:element ref="div"/>
|
||||
<xs:element ref="biblioentries"/>
|
||||
</xs:choice>
|
||||
</xs:sequence>
|
||||
<xs:attribute name="id" use="required" type="xs:ID"/>
|
||||
@@ -83,7 +86,7 @@
|
||||
<xs:attribute ref="xml:base"/>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
|
||||
<xs:element name="appendix">
|
||||
<xs:complexType>
|
||||
<xs:sequence>
|
||||
@@ -104,17 +107,18 @@
|
||||
<xs:attribute ref="visibility" use="optional"/>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
<xs:complexType name="block" mixed="true">
|
||||
|
||||
<xs:complexType name="block" mixed="true">
|
||||
<xs:choice maxOccurs="unbounded">
|
||||
<xs:group ref="inline-all"/>
|
||||
<xs:group ref="placeholders"/>
|
||||
</xs:choice>
|
||||
<xs:attribute ref="xml:base"/>
|
||||
</xs:complexType>
|
||||
|
||||
<!-- Placeholders -->
|
||||
|
||||
<!-- Placeholders -->
|
||||
|
||||
<xs:group name="placeholders">
|
||||
<xs:choice></xs:choice>
|
||||
<xs:choice/>
|
||||
</xs:group>
|
||||
</xs:schema>
|
||||
|
||||
@@ -68,7 +68,6 @@
|
||||
<xs:sequence>
|
||||
<xs:element ref="duration"/>
|
||||
<xs:element ref="test_planning"/>
|
||||
<xs:element ref="report_writing"/>
|
||||
<xs:element ref="report_due"/>
|
||||
<xs:element ref="nature"/>
|
||||
<xs:element ref="type"/>
|
||||
@@ -114,6 +113,7 @@
|
||||
</xs:choice>
|
||||
</xs:sequence>
|
||||
<xs:attribute ref="xml:base"/>
|
||||
<xs:attribute ref="xml:lang"/>
|
||||
<xs:attribute ref="visibility" use="optional"/>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
@@ -122,11 +122,10 @@
|
||||
<xs:complexType>
|
||||
<xs:sequence>
|
||||
<xs:element ref="standard_waiver"/>
|
||||
<xs:choice>
|
||||
<xs:element ref="alternative_waiver"/>
|
||||
</xs:choice>
|
||||
<xs:element ref="alternative_waiver" minOccurs="0"/>
|
||||
</xs:sequence>
|
||||
<xs:attribute ref="xml:base"/>
|
||||
<xs:attribute ref="xml:lang"/>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
@@ -192,6 +191,7 @@
|
||||
<xs:attribute name="id" use="optional" type="xs:ID"/>
|
||||
<xs:attribute ref="break" use="optional"/>
|
||||
<xs:attribute ref="xml:base"/>
|
||||
<xs:attribute ref="xml:lang"/>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
@@ -232,7 +232,6 @@
|
||||
<xs:element name="p_boxtype"/>
|
||||
<xs:element name="p_fee"/>
|
||||
<xs:element name="p_testingduration"/>
|
||||
<xs:element name="p_reportwritingduration"/>
|
||||
<xs:element name="p_reportdue"/>
|
||||
<xs:element name="signee_long"/>
|
||||
<xs:element name="signee_short"/>
|
||||
|
||||
@@ -25,6 +25,7 @@
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
</xs:attribute>
|
||||
<xs:attribute ref="xml:lang"/>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
@@ -48,7 +49,6 @@
|
||||
<xs:sequence>
|
||||
<xs:element ref="duration"/>
|
||||
<xs:element ref="test_planning"/>
|
||||
<xs:element ref="report_writing"/>
|
||||
<xs:element ref="report_due"/>
|
||||
<xs:element ref="nature"/>
|
||||
<xs:element ref="type"/>
|
||||
@@ -126,9 +126,18 @@
|
||||
</xs:sequence>
|
||||
<xs:attribute name="id" use="required" type="xs:ID"/>
|
||||
<xs:attribute ref="visibility" use="optional"/>
|
||||
<xs:attribute ref="xml:lang"/>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
<xs:complexType name="block" mixed="true">
|
||||
<xs:choice maxOccurs="unbounded">
|
||||
<xs:group ref="inline-all"/>
|
||||
<xs:group ref="placeholders"/>
|
||||
</xs:choice>
|
||||
<xs:attribute ref="xml:base"/>
|
||||
</xs:complexType>
|
||||
|
||||
<xs:element name="generate_testteam">
|
||||
<xs:complexType/>
|
||||
</xs:element>
|
||||
@@ -158,6 +167,7 @@
|
||||
<xs:attribute ref="break" use="optional"/>
|
||||
<xs:attribute ref="visibility" use="optional"/>
|
||||
<xs:attribute ref="xml:base"/>
|
||||
<xs:attribute ref="xml:lang"/>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
@@ -186,11 +196,31 @@
|
||||
<xs:element name="generate_recommendations">
|
||||
<xs:complexType>
|
||||
<xs:attribute name="Ref" use="optional" type="xs:IDREF"/>
|
||||
<xs:attribute name="status" use="optional">
|
||||
<xs:simpleType>
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:enumeration value="new"/>
|
||||
<xs:enumeration value="resolved"/>
|
||||
<xs:enumeration value="unresolved"/>
|
||||
<xs:enumeration value="not_retested"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
</xs:attribute>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
<xs:element name="generate_findings">
|
||||
<xs:complexType>
|
||||
<xs:attribute name="Ref" use="optional" type="xs:IDREF"/>
|
||||
<xs:attribute name="status" use="optional">
|
||||
<xs:simpleType>
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:enumeration value="new"/>
|
||||
<xs:enumeration value="resolved"/>
|
||||
<xs:enumeration value="unresolved"/>
|
||||
<xs:enumeration value="not_retested"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
</xs:attribute>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
<xs:element name="finding">
|
||||
@@ -225,6 +255,16 @@
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
</xs:attribute>
|
||||
<xs:attribute name="status" use="optional">
|
||||
<xs:simpleType>
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:enumeration value="new"/>
|
||||
<xs:enumeration value="resolved"/>
|
||||
<xs:enumeration value="unresolved"/>
|
||||
<xs:enumeration value="not_retested"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
</xs:attribute>
|
||||
<xs:attribute name="type" use="required"/>
|
||||
<xs:attribute name="break" use="optional">
|
||||
<xs:simpleType>
|
||||
@@ -305,14 +345,6 @@
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
|
||||
<xs:complexType name="block" mixed="true">
|
||||
<xs:choice maxOccurs="unbounded">
|
||||
<xs:group ref="inline-all"/>
|
||||
<xs:group ref="placeholders"/>
|
||||
</xs:choice>
|
||||
<xs:attribute ref="xml:base"/>
|
||||
</xs:complexType>
|
||||
|
||||
<!-- Placeholders -->
|
||||
<xs:group name="placeholders">
|
||||
<xs:choice>
|
||||
|
||||
BIN
xml/graphics/omemog1.png
Normal file
BIN
xml/graphics/omemog1.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 147 KiB |
BIN
xml/graphics/omemog2.png
Normal file
BIN
xml/graphics/omemog2.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 67 KiB |
BIN
xml/graphics/omemog3.png
Normal file
BIN
xml/graphics/omemog3.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 48 KiB |
@@ -79,7 +79,7 @@ the location of this file.
|
||||
<!--
|
||||
<directory recursive="true">/Library/Fonts/</directory>
|
||||
-->
|
||||
<font kerning="yes" embed-url="LiberationSansNarrow-Regular-webfont.ttf">
|
||||
<font kerning="yes" embed-url="LiberationSansNarrow-Regular.ttf">
|
||||
<font-triplet name="LiberationSansNarrow" style="normal" weight="normal"/>
|
||||
</font>
|
||||
<font kerning="yes" embed-url="LiberationSansNarrow-Bold.ttf">
|
||||
|
||||
36
xml/source/contract_info.xml
Normal file
36
xml/source/contract_info.xml
Normal file
@@ -0,0 +1,36 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<contract_info xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xmlns:xi="http://www.w3.org/2001/XInclude" xmlns:xlink="http://www.w3.org/1999/xlink" xsi:noNamespaceSchemaLocation="../dtd/contract_info.xsd" xml:lang="en">
|
||||
<!-- WARNING:
|
||||
Please note that the PenText creators make no claims regarding the validity of the contract generated by filling in the elements below and generating the pdf using the PenText system.
|
||||
The contract snippets in this repo are provided as an example and should not be used for official contracts. It is the responsibility of the end user to edit the contract snippets and code so that the resulting contract is valid and watertight in the context of their own business operations and legal system. -->
|
||||
<xi:include href="snippets/company_info.xml"/>
|
||||
<scope>
|
||||
<contract_type>fixed_term</contract_type><!-- single_engagement or fixed_term -->
|
||||
<engagement_description>battle the pirates</engagement_description><!-- [NOTE: only needed for SINGLE ENGAGEMENT type contract, value is ignored otherwise] -->
|
||||
<secondpartyrole>Consultant</secondpartyrole><!-- what contractor will be referred to throughout the contract. Can be anything, but should probably be Consultant or Consultancy company. When in doubt, leave as is. -->
|
||||
</scope>
|
||||
<contractor sex="M"><!-- (M|F|O) (O for other) --> <!-- this info is used to select the correct pronoun, not for profiling :) -->
|
||||
<name>Peter Pan</name>
|
||||
<ctcompany>Lost Boys Inc.</ctcompany><!-- delete element in case of freelancer without company -->
|
||||
<address>Cloud 9</address>
|
||||
<postal_code>1234 XX</postal_code>
|
||||
<city>Treehouse City</city>
|
||||
<country>Neverland</country>
|
||||
<email>peter@pan.tech</email>
|
||||
<hourly_fee denomination="eur">50</hourly_fee><!-- (eur|gbp|usd) -->
|
||||
</contractor>
|
||||
<work>
|
||||
<activities><!-- add/delete activity elements as necessary -->
|
||||
<activity>Taunting Captain Hook</activity>
|
||||
<activity>Feeding crocodiles</activity>
|
||||
<activity>Flying to and fro ('to' and 'fro' to be specified at takeoff)</activity>
|
||||
</activities>
|
||||
<start_date>2016-08-18</start_date>
|
||||
<end_date>2016-09-15</end_date>
|
||||
<planning><!-- amount of work to be done between the start and end date -->
|
||||
<hours>30</hours><!-- non-negative integer, used for planned working hours over total engagement (for SINGLE ENGAGEMENT contract) or over each period in <per> (for FIXED TIME contract) -->
|
||||
<per>month</per><!-- (month|week) [NOTE: only used for FIXED TIME contract, value is ignored otherwise] -->
|
||||
</planning>
|
||||
</work>
|
||||
</contract_info>
|
||||
@@ -0,0 +1,2 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<li>If during the course of the Activities, there is a risk that the scope of the assignment is bigger than expected, the <secondpartyrole/> will let <company_short/> know without delay.</li>
|
||||
2
xml/source/snippets/contract/en/ag_companyinstructs.xml
Normal file
2
xml/source/snippets/contract/en/ag_companyinstructs.xml
Normal file
@@ -0,0 +1,2 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<li><company_short/> instructs (in Dutch: "<i>wijst aan</i>"; not "<i>instrueert</i>") the <secondpartyrole/> – and the <secondpartyrole/> agrees to perform the following activities (the “<b>Activities</b>”): <contract_activities/></li>
|
||||
@@ -0,0 +1,2 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<li>The general terms and conditions of <company_short/> apply to this agreement. <company_short/> rejects any general terms and conditions used by the <secondpartyrole/>.</li>
|
||||
2
xml/source/snippets/contract/en/ag_law.xml
Normal file
2
xml/source/snippets/contract/en/ag_law.xml
Normal file
@@ -0,0 +1,2 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<li>Dutch law applies to this agreement. Any dispute between <company_short/> and <secondpartyrole/> will be resolved in the first instance exclusively by the District Court (in Dutch: “<i>rechtbank</i>”) of Amsterdam, the Netherlands.</li>
|
||||
2
xml/source/snippets/contract/en/ag_liability.xml
Normal file
2
xml/source/snippets/contract/en/ag_liability.xml
Normal file
@@ -0,0 +1,2 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<li>Unless a result of gross negligence or willful misconduct, the liability of either party to the other for any type of damages is limited to the amount of <secondpartyrole/>'s total fees under Article 5 of this agreement.</li>
|
||||
3
xml/source/snippets/contract/en/ag_noemployment.xml
Normal file
3
xml/source/snippets/contract/en/ag_noemployment.xml
Normal file
@@ -0,0 +1,3 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<li><company_short/> and the <secondpartyrole/> explicitly do not intend to enter into an employment agreement (in Dutch: “<i>arbeidsovereenkomst</i>”) as in Article 7:610 Burgerlijk Wetboek. The <secondpartyrole/> guarantees he shall never claim an employment agreement exists.
|
||||
</li>
|
||||
2
xml/source/snippets/contract/en/ag_nondisclosure.xml
Normal file
2
xml/source/snippets/contract/en/ag_nondisclosure.xml
Normal file
@@ -0,0 +1,2 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<li>The <secondpartyrole/> will not disclose confidential information and personal data <contractor_personal_pronoun/> receives from <company_short/>, or gains access to in the course of the Activities. The <secondpartyrole/> will only use this information or data for the purposes of carrying out this agreement. The <secondpartyrole/> will take reasonable measures to maintain the confidentiality of this information and data. The <secondpartyrole/> may disclose this information and data on a need-to-know basis, and only to persons associated with <company_short/> as employee, freelancer or volunteer and only if the <secondpartyrole/> knows that they are bound by the same confidentiality obligations.</li>
|
||||
2
xml/source/snippets/contract/en/ag_ownrisk.xml
Normal file
2
xml/source/snippets/contract/en/ag_ownrisk.xml
Normal file
@@ -0,0 +1,2 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<li>The <secondpartyrole/> is working at his or her own risk (in Dutch: “<i>voor eigen rekening en risico</i>”). The <secondpartyrole/> is free to perform the Activities at his or her own discretion (in Dutch: “<i>naar eigen inzicht</i>”) and independently. The <secondpartyrole/> will use his own resources and tools to perform the Activities for <company_short/>.</li>
|
||||
@@ -0,0 +1,3 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<li><p><company_short/> will pay the <secondpartyrole/> <contractor_hourly_fee/> per hour excluding VAT. It will do so after <company_short/> has received an invoice from the <secondpartyrole/>. The <secondpartyrole/> will send an invoice within 14 days after the end of each calendar month for the Activities performed during that month.</p>
|
||||
<p><company_short/> will then pay the agreed amount within 30 days of receipt of the invoice. <company_short/> will also pay reasonable travel expenses of the <secondpartyrole/>, to the extent that <company_short/> has given prior written approval for such costs and the <secondpartyrole/> provides <company_short/> with an invoice or other documentation for these expenses. <company_short/> will not reimburse any other costs the <secondpartyrole/> incurs in the course of the Activities, unless <company_short/> has given prior written approval for such costs. For the avoidance of doubt, <company_short/> shall pay no wages (in Dutch: "<i>salaris</i>") to the <secondpartyrole/> and therefore, <company_short/> shall not provide payslips to the <secondpartyrole/>, nor pay to the <secondpartyrole/> any money or allowance in the event of a holiday or illness of the <secondpartyrole/>.</p></li>
|
||||
@@ -0,0 +1,3 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<li><p><company_short/> will pay the <secondpartyrole/> for a <contract_planned_hours/>-hour engagement: <contractor_hourly_fee/> per hour excluding VAT, therefore totaling <contract_total_fee/> excluding VAT. It will do so after <company_short/> has been paid for the assignment in the context of which the Activities took place and has received an invoice from the <secondpartyrole/>. The <secondpartyrole/> will send an invoice within 14 days after the end of each calendar month for the Activities performed during that month.</p>
|
||||
<p><company_short/> will then pay the agreed amount within 30 days of receipt of the invoice. <company_short/> will also pay reasonable travel expenses of the <secondpartyrole/>, to the extent that <company_short/> has given prior written approval for such costs and the <secondpartyrole/> provides <company_short/> with an invoice or other documentation for these expenses. <company_short/> will not reimburse any other costs the <secondpartyrole/> incurs in the course of the Activities, unless <company_short/> has given prior written approval for such costs. For the avoidance of doubt, <company_short/> shall pay no wages (in Dutch: "<i>salaris</i>") to the <secondpartyrole/> and therefore, <company_short/> shall not provide payslips to the <secondpartyrole/>, nor pay to the <secondpartyrole/> any money or allowance in the event of a holiday or illness of the <secondpartyrole/>.</p></li>
|
||||
4
xml/source/snippets/contract/en/ag_period.xml
Normal file
4
xml/source/snippets/contract/en/ag_period.xml
Normal file
@@ -0,0 +1,4 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<li><p>This contract shall be effective as of <contract_start_date/> for the period of <contract_period/>. This contract will end by operation of law on <contract_end_date/> without any notice being required.</p>
|
||||
<p>In case of tacit extension of this contract, the parties agree to do so for the same term and on the same conditions. Either party is entitled to give notice of termination of the contract with immediate effect. Notice of termination should be given by email. (To <company_short/>: <company_email/>; to the <secondpartyrole/>: <contractor_email/>) The other party will confirm the termination by return.</p>
|
||||
<p>Premature termination shall not give rise to liability or financial compensation for either party.</p></li>
|
||||
2
xml/source/snippets/contract/en/ag_propertyrights.xml
Normal file
2
xml/source/snippets/contract/en/ag_propertyrights.xml
Normal file
@@ -0,0 +1,2 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<li>The <secondpartyrole/> transfers to <company_short/> all intellectual property rights created as a result of the Activities. To the extent that it is not possible to transfer these rights, <contractor_personal_pronoun/> grants to <company_short/> a perpetual, exclusive transferable, sub-licensable, world-wide license to such rights, and agrees to co-operate with the transfer of these rights to <company_short/>. To the extent that the <secondpartyrole/> has transferred these rights to <company_short/>, <company_short/> grants a perpetual, non-exclusive, non-transferable, not-sub-licensable, world-wide license to such rights to the <secondpartyrole/>, unless <company_short/> considers this impossible, due to obligations <company_short/> might have vis-à-vis others. In that case, <company_short/> will explore whether it is possible to grant to the <secondpartyrole/> a license on the rights with a narrower scope. For the avoidance of doubt, any rights of the <secondpartyrole/> vested in software or services developed prior to the Activities are not affected by this agreement.</li>
|
||||
2
xml/source/snippets/contract/en/ag_provisions.xml
Normal file
2
xml/source/snippets/contract/en/ag_provisions.xml
Normal file
@@ -0,0 +1,2 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<li>If any of the provisions of this agreement is annulled or void, the other provisions remain in effect. To the extent possible, the annulled or void provision will be replaced by a similar provision that has the same effect.</li>
|
||||
12
xml/source/snippets/contract/en/ag_responsibilities.xml
Normal file
12
xml/source/snippets/contract/en/ag_responsibilities.xml
Normal file
@@ -0,0 +1,12 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<li>The <secondpartyrole/> is responsible: <ul><li>for ensuring that any work performed in the course of
|
||||
this agreement is lawful (in Dutch: “<i>rechtmatig</i>”) and not illegal (in Dutch: “<i>niet
|
||||
strafbaar</i>”);</li>
|
||||
<li>for ensuring that by performing the Activities, <contractor_personal_pronoun/> does not act contrary to a
|
||||
non-compete- or a confidentiality obligation <contractor_personal_pronoun/> may have. If there is a risk that
|
||||
the <secondpartyrole/> will act contrary to such an obligation, <contractor_personal_pronoun/> will inform <company_short/>
|
||||
without delay. <company_short/> then has the right to terminate the agreement without
|
||||
compensation;</li>
|
||||
<li>and for paying any applicable taxes and social security premiums following from the
|
||||
Activities. Should <company_short/> have to pay any of these, the <secondpartyrole/> will indemnify
|
||||
<company_short/>.</li></ul></li>
|
||||
2
xml/source/snippets/contract/en/ag_retainrights.xml
Normal file
2
xml/source/snippets/contract/en/ag_retainrights.xml
Normal file
@@ -0,0 +1,2 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<li>The <secondpartyrole/> retains all intellectual property rights <contractor_personal_pronoun/> owns prior to this agreement.</li>
|
||||
2
xml/source/snippets/contract/en/ag_thirdparty.xml
Normal file
2
xml/source/snippets/contract/en/ag_thirdparty.xml
Normal file
@@ -0,0 +1,2 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<li>Should a third party lodge a claim against <company_short/> or any of its employees, freelancers or volunteers, or the public prosecutor initiate an investigation or criminal proceedings against any of these parties, as a result of activities performed by the <secondpartyrole/> under this agreement, then the <secondpartyrole/> will co-operate fully with <company_short/> in defending against this claim, investigation or these proceedings, including by providing any evidence he or she has which may be relevant to this defense.</li>
|
||||
2
xml/source/snippets/contract/en/ag_workinghours.xml
Normal file
2
xml/source/snippets/contract/en/ag_workinghours.xml
Normal file
@@ -0,0 +1,2 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<li>The agreed working hours shall amount to <contract_planned_hours/> hours per <contract_period_unit/>. The <secondpartyrole/> may be expected to perform overtime outside the established working hours whenever this is necessary for the proper performance of the Activites.</li>
|
||||
2
xml/source/snippets/contract/en/ag_worktime.xml
Normal file
2
xml/source/snippets/contract/en/ag_worktime.xml
Normal file
@@ -0,0 +1,2 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<li>The <secondpartyrole/> will perform the Activities from <contract_start_date/> up to and including <contract_end_date/>.</li>
|
||||
6
xml/source/snippets/contract/en/parties.xml
Normal file
6
xml/source/snippets/contract/en/parties.xml
Normal file
@@ -0,0 +1,6 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<div><p><u><b><company_long/></b></u>, located at <company_address/>, <company_postalcode/>, <company_city/>, represented by <company_poc1/> (“<b><company_short/></b>”);</p>
|
||||
|
||||
<p>AND</p>
|
||||
|
||||
<p><u><b><contractor_name/><!-- this might include the company in parentheses; if you don't want the company in here, remove the <ctcompany> element from contract_info.xml --></b></u>, with <contractor_possessive_pronoun/> address at <contractor_address/>, <contractor_postalcode/>, <contractor_city/>, <contractor_country/> (the “<b><secondpartyrole/></b>”);</p></div>
|
||||
2
xml/source/snippets/contract/en/wa_companyhasasked.xml
Normal file
2
xml/source/snippets/contract/en/wa_companyhasasked.xml
Normal file
@@ -0,0 +1,2 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<li><company_short/> has asked the <secondpartyrole/> to assist with this.</li>
|
||||
2
xml/source/snippets/contract/en/wa_companywants.xml
Normal file
2
xml/source/snippets/contract/en/wa_companywants.xml
Normal file
@@ -0,0 +1,2 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<li><company_short/> wants to <engagement_description/>.</li>
|
||||
2
xml/source/snippets/contract/en/wa_contractorcan.xml
Normal file
2
xml/source/snippets/contract/en/wa_contractorcan.xml
Normal file
@@ -0,0 +1,2 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<li>The <secondpartyrole/> is willing and able to perform the activities mentioned hereafter.</li>
|
||||
@@ -0,0 +1,2 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<li><company_short/> and the <secondpartyrole/> have no intention whatsoever to agree upon an employment agreement and this agreement is only drafted to enable the <secondpartyrole/> to perform incidental activities for <company_short/>. <company_short/> and the <secondpartyrole/> explicitly confirm that this agreement does not qualify as an employment agreement. The <secondpartyrole/> is free to perform work for other parties, and in fact does so on a regular basis.</li>
|
||||
@@ -0,0 +1,2 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<li>If during the course of the Activities, there is a risk that the scope of the assignment is bigger than expected, the <secondpartyrole/> will let <company_short/> know without delay.</li>
|
||||
2
xml/source/snippets/contract/nl/ag_companyinstructs.xml
Normal file
2
xml/source/snippets/contract/nl/ag_companyinstructs.xml
Normal file
@@ -0,0 +1,2 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<li><company_short/> instructs (in Dutch: "<i>wijst aan</i>"; not "<i>instrueert</i>") the <secondpartyrole/> – and the <secondpartyrole/> agrees to perform the following activities (the “<b>Activities</b>”): <contract_activities/></li>
|
||||
@@ -0,0 +1,2 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<li>The general terms and conditions of <company_short/> apply to this agreement. <company_short/> rejects any general terms and conditions used by the <secondpartyrole/>.</li>
|
||||
2
xml/source/snippets/contract/nl/ag_law.xml
Normal file
2
xml/source/snippets/contract/nl/ag_law.xml
Normal file
@@ -0,0 +1,2 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<li>Dutch law applies to this agreement. Any dispute between <company_short/> and <secondpartyrole/> will be resolved in the first instance exclusively by the District Court (in Dutch: “<i>rechtbank</i>”) of Amsterdam, the Netherlands.</li>
|
||||
2
xml/source/snippets/contract/nl/ag_liability.xml
Normal file
2
xml/source/snippets/contract/nl/ag_liability.xml
Normal file
@@ -0,0 +1,2 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<li>Unless a result of gross negligence or willful misconduct, the liability of either party to the other for any type of damages is limited to the amount of <secondpartyrole/>'s total fees under Article 5 of this agreement.</li>
|
||||
3
xml/source/snippets/contract/nl/ag_noemployment.xml
Normal file
3
xml/source/snippets/contract/nl/ag_noemployment.xml
Normal file
@@ -0,0 +1,3 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<li><company_short/> and the <secondpartyrole/> explicitly do not intend to enter into an employment agreement (in Dutch: “<i>arbeidsovereenkomst</i>”) as in Article 7:610 Burgerlijk Wetboek. The <secondpartyrole/> guarantees he shall never claim an employment agreement exists.
|
||||
</li>
|
||||
2
xml/source/snippets/contract/nl/ag_nondisclosure.xml
Normal file
2
xml/source/snippets/contract/nl/ag_nondisclosure.xml
Normal file
@@ -0,0 +1,2 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<li>The <secondpartyrole/> will not disclose confidential information and personal data <contractor_personal_pronoun/> receives from <company_short/>, or gains access to in the course of the Activities. The <secondpartyrole/> will only use this information or data for the purposes of carrying out this agreement. The <secondpartyrole/> will take reasonable measures to maintain the confidentiality of this information and data. The <secondpartyrole/> may disclose this information and data on a need-to-know basis, and only to persons associated with <company_short/> as employee, freelancer or volunteer and only if the <secondpartyrole/> knows that they are bound by the same confidentiality obligations.</li>
|
||||
2
xml/source/snippets/contract/nl/ag_ownrisk.xml
Normal file
2
xml/source/snippets/contract/nl/ag_ownrisk.xml
Normal file
@@ -0,0 +1,2 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<li>The <secondpartyrole/> is working at his or her own risk (in Dutch: “<i>voor eigen rekening en risico</i>”). The <secondpartyrole/> is free to perform the Activities at his or her own discretion (in Dutch: “<i>naar eigen inzicht</i>”) and independently. The <secondpartyrole/> will use his own resources and tools to perform the Activities for <company_short/>.</li>
|
||||
@@ -0,0 +1,3 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<li><p><company_short/> will pay the <secondpartyrole/> <contractor_hourly_fee/> per hour excluding VAT. It will do so after <company_short/> has received an invoice from the <secondpartyrole/>. The <secondpartyrole/> will send an invoice within 14 days after the end of each calendar month for the Activities performed during that month.</p>
|
||||
<p><company_short/> will then pay the agreed amount within 30 days of receipt of the invoice. <company_short/> will also pay reasonable travel expenses of the <secondpartyrole/>, to the extent that <company_short/> has given prior written approval for such costs and the <secondpartyrole/> provides <company_short/> with an invoice or other documentation for these expenses. <company_short/> will not reimburse any other costs the <secondpartyrole/> incurs in the course of the Activities, unless <company_short/> has given prior written approval for such costs. For the avoidance of doubt, <company_short/> shall pay no wages (in Dutch: "<i>salaris</i>") to the <secondpartyrole/> and therefore, <company_short/> shall not provide payslips to the <secondpartyrole/>, nor pay to the <secondpartyrole/> any money or allowance in the event of a holiday or illness of the <secondpartyrole/>.</p></li>
|
||||
@@ -0,0 +1,3 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<li><p><company_short/> will pay the <secondpartyrole/> for a <contract_planned_hours/>-hour engagement: <contractor_hourly_fee/> per hour excluding VAT, therefore totaling <contract_total_fee/> excluding VAT. It will do so after <company_short/> has been paid for the assignment in the context of which the Activities took place and has received an invoice from the <secondpartyrole/>. The <secondpartyrole/> will send an invoice within 14 days after the end of each calendar month for the Activities performed during that month.</p>
|
||||
<p><company_short/> will then pay the agreed amount within 30 days of receipt of the invoice. <company_short/> will also pay reasonable travel expenses of the <secondpartyrole/>, to the extent that <company_short/> has given prior written approval for such costs and the <secondpartyrole/> provides <company_short/> with an invoice or other documentation for these expenses. <company_short/> will not reimburse any other costs the <secondpartyrole/> incurs in the course of the Activities, unless <company_short/> has given prior written approval for such costs. For the avoidance of doubt, <company_short/> shall pay no wages (in Dutch: "<i>salaris</i>") to the <secondpartyrole/> and therefore, <company_short/> shall not provide payslips to the <secondpartyrole/>, nor pay to the <secondpartyrole/> any money or allowance in the event of a holiday or illness of the <secondpartyrole/>.</p></li>
|
||||
4
xml/source/snippets/contract/nl/ag_period.xml
Normal file
4
xml/source/snippets/contract/nl/ag_period.xml
Normal file
@@ -0,0 +1,4 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<li><p>This contract shall be effective as of <contract_start_date/> for the period of <contract_period/><!-- note: period can only be computed in years/months (for periods longer than a month) or days (for periods shorter than a month). If the period is e.g. 1 month and 14 days, this value will NOT be correct and must be added manually -->. This contract will end by operation of law on <contract_end_date/> without any notice being required.</p>
|
||||
<p>In case of tacit extension of this contract, the parties agree to do so for the same term and on the same conditions. Either party is entitled to give notice of termination of the contract with immediate effect. Notice of termination should be given by email. (To <company_short/>: <company_email/>; to the <secondpartyrole/>: <contractor_email/>) The other party will confirm the termination by return.</p>
|
||||
<p>Premature termination shall not give rise to liability or financial compensation for either party.</p></li>
|
||||
2
xml/source/snippets/contract/nl/ag_propertyrights.xml
Normal file
2
xml/source/snippets/contract/nl/ag_propertyrights.xml
Normal file
@@ -0,0 +1,2 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<li>The <secondpartyrole/> transfers to <company_short/> all intellectual property rights created as a result of the Activities. To the extent that it is not possible to transfer these rights, <contractor_personal_pronoun/> grants to <company_short/> a perpetual, exclusive transferable, sub-licensable, world-wide license to such rights, and agrees to co-operate with the transfer of these rights to <company_short/>. To the extent that the <secondpartyrole/> has transferred these rights to <company_short/>, <company_short/> grants a perpetual, non-exclusive, non-transferable, not-sub-licensable, world-wide license to such rights to the <secondpartyrole/>, unless <company_short/> considers this impossible, due to obligations <company_short/> might have vis-à-vis others. In that case, <company_short/> will explore whether it is possible to grant to the <secondpartyrole/> a license on the rights with a narrower scope. For the avoidance of doubt, any rights of the <secondpartyrole/> vested in software or services developed prior to the Activities are not affected by this agreement.</li>
|
||||
2
xml/source/snippets/contract/nl/ag_provisions.xml
Normal file
2
xml/source/snippets/contract/nl/ag_provisions.xml
Normal file
@@ -0,0 +1,2 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<li>If any of the provisions of this agreement is annulled or void, the other provisions remain in effect. To the extent possible, the annulled or void provision will be replaced by a similar provision that has the same effect.</li>
|
||||
12
xml/source/snippets/contract/nl/ag_responsibilities.xml
Normal file
12
xml/source/snippets/contract/nl/ag_responsibilities.xml
Normal file
@@ -0,0 +1,12 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<li>The <secondpartyrole/> is responsible: <ul><li>for ensuring that any work performed in the course of
|
||||
this agreement is lawful (in Dutch: “<i>rechtmatig</i>”) and not illegal (in Dutch: “<i>niet
|
||||
strafbaar</i>”);</li>
|
||||
<li>for ensuring that by performing the Activities, <contractor_personal_pronoun/> does not act contrary to a
|
||||
non-compete- or a confidentiality obligation <contractor_personal_pronoun/> may have. If there is a risk that
|
||||
the <secondpartyrole/> will act contrary to such an obligation, <contractor_personal_pronoun/> will inform <company_short/>
|
||||
without delay. <company_short/> then has the right to terminate the agreement without
|
||||
compensation;</li>
|
||||
<li>and for paying any applicable taxes and social security premiums following from the
|
||||
Activities. Should <company_short/> have to pay any of these, the <secondpartyrole/> will indemnify
|
||||
<company_short/>.</li></ul></li>
|
||||
2
xml/source/snippets/contract/nl/ag_retainrights.xml
Normal file
2
xml/source/snippets/contract/nl/ag_retainrights.xml
Normal file
@@ -0,0 +1,2 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<li>The <secondpartyrole/> retains all intellectual property rights <contractor_personal_pronoun/> owns prior to this agreement.</li>
|
||||
2
xml/source/snippets/contract/nl/ag_thirdparty.xml
Normal file
2
xml/source/snippets/contract/nl/ag_thirdparty.xml
Normal file
@@ -0,0 +1,2 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<li>Should a third party lodge a claim against <company_short/> or any of its employees, freelancers or volunteers, or the public prosecutor initiate an investigation or criminal proceedings against any of these parties, as a result of activities performed by the <secondpartyrole/> under this agreement, then the <secondpartyrole/> will co-operate fully with <company_short/> in defending against this claim, investigation or these proceedings, including by providing any evidence he or she has which may be relevant to this defense.</li>
|
||||
2
xml/source/snippets/contract/nl/ag_workinghours.xml
Normal file
2
xml/source/snippets/contract/nl/ag_workinghours.xml
Normal file
@@ -0,0 +1,2 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<li>The agreed working hours shall amount to <contract_planned_hours/> hours per <contract_period_unit/>. The <secondpartyrole/> may be expected to perform overtime outside the established working hours whenever this is necessary for the proper performance of the Activites.</li>
|
||||
2
xml/source/snippets/contract/nl/ag_worktime.xml
Normal file
2
xml/source/snippets/contract/nl/ag_worktime.xml
Normal file
@@ -0,0 +1,2 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<li>The <secondpartyrole/> will perform the Activities from <contract_start_date/> up to and including <contract_end_date/>.</li>
|
||||
6
xml/source/snippets/contract/nl/parties.xml
Normal file
6
xml/source/snippets/contract/nl/parties.xml
Normal file
@@ -0,0 +1,6 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<div><p><u><b><company_long/></b></u>, met adres <company_address/>, <company_postalcode/>, <company_city/>, vertegenwoordigd door <company_poc1/> (“<b><company_short/></b>”);</p>
|
||||
|
||||
<p>EN</p>
|
||||
|
||||
<p><u><b><contractor_name/></b></u>, met <contractor_possessive_pronoun/> adres op <contractor_address/>, <contractor_postalcode/>, <contractor_city/>, <contractor_country/> (de “<b><secondpartyrole/></b>”);</p></div>
|
||||
2
xml/source/snippets/contract/nl/wa_companyhasasked.xml
Normal file
2
xml/source/snippets/contract/nl/wa_companyhasasked.xml
Normal file
@@ -0,0 +1,2 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<li><company_short/> has asked the <secondpartyrole/> to assist with this.</li>
|
||||
2
xml/source/snippets/contract/nl/wa_companywants.xml
Normal file
2
xml/source/snippets/contract/nl/wa_companywants.xml
Normal file
@@ -0,0 +1,2 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<li><company_short/> wants to <engagement_description/>.</li>
|
||||
2
xml/source/snippets/contract/nl/wa_contractorcan.xml
Normal file
2
xml/source/snippets/contract/nl/wa_contractorcan.xml
Normal file
@@ -0,0 +1,2 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<li>The <secondpartyrole/> is willing and able to perform the activities mentioned hereafter.</li>
|
||||
@@ -0,0 +1,2 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<li><company_short/> and the <secondpartyrole/> have no intention whatsoever to agree upon an employment agreement and this agreement is only drafted to enable the <secondpartyrole/> to perform incidental activities for <company_short/>. <company_short/> and the <secondpartyrole/> explicitly confirm that this agreement does not qualify as an employment agreement. The <secondpartyrole/> is free to perform work for other parties, and in fact does so on a regular basis.</li>
|
||||
@@ -63,5 +63,45 @@
|
||||
<translation xml:lang="nl">namens</translation>
|
||||
<translation xml:lang="en">for</translation>
|
||||
</string>
|
||||
<string id="signed_dupe">
|
||||
<translation xml:lang="nl">In duplicaat getekend</translation>
|
||||
<translation xml:lang="en">Signed in duplicate</translation>
|
||||
</string>
|
||||
<string id="contract_title">
|
||||
<translation xml:lang="nl">security consulting agreement</translation>
|
||||
<translation xml:lang="en">security consulting agreement</translation>
|
||||
</string>
|
||||
<string id="contract_whereas">
|
||||
<translation xml:lang="nl">in aanmerking genomen dat</translation>
|
||||
<translation xml:lang="en">whereas</translation>
|
||||
</string>
|
||||
<string id="contract_agree">
|
||||
<translation xml:lang="nl">komen het volgende overeen</translation>
|
||||
<translation xml:lang="en">agree as follows</translation>
|
||||
</string>
|
||||
<string id="personal_m">
|
||||
<translation xml:lang="nl">hij</translation>
|
||||
<translation xml:lang="en">he</translation>
|
||||
</string>
|
||||
<string id="personal_f">
|
||||
<translation xml:lang="nl">ze</translation>
|
||||
<translation xml:lang="en">she</translation>
|
||||
</string>
|
||||
<string id="personal_o">
|
||||
<translation xml:lang="nl">hen</translation>
|
||||
<translation xml:lang="en">they</translation>
|
||||
</string>
|
||||
<string id="possessive_m">
|
||||
<translation xml:lang="nl">zijn</translation>
|
||||
<translation xml:lang="en">his</translation>
|
||||
</string>
|
||||
<string id="possessive_f">
|
||||
<translation xml:lang="nl">haar</translation>
|
||||
<translation xml:lang="en">her</translation>
|
||||
</string>
|
||||
<string id="possessive_o">
|
||||
<translation xml:lang="nl">hun</translation>
|
||||
<translation xml:lang="en">their</translation>
|
||||
</string>
|
||||
</localised_strings>
|
||||
|
||||
|
||||
74
xml/source/snippets/snippetselection.xml
Normal file
74
xml/source/snippets/snippetselection.xml
Normal file
@@ -0,0 +1,74 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<snippet_selection>
|
||||
<document type="offerte">
|
||||
<selection subtype="pentest">
|
||||
<snippet>introandscope</snippet>
|
||||
<snippet>projectoverview</snippet>
|
||||
</selection>
|
||||
<selection subtype="basic-scan">
|
||||
<snippet>introandscope</snippet>
|
||||
<snippet>projectoverview</snippet>
|
||||
</selection>
|
||||
</document>
|
||||
<document type="contract">
|
||||
<selection subtype="single_engagement">
|
||||
<snippet_group set="parties">
|
||||
<!-- define parties in contract -->
|
||||
<snippet>parties</snippet>
|
||||
</snippet_group>
|
||||
<snippet_group set="whereas">
|
||||
<!-- define conditions -->
|
||||
<snippet>wa_companywants</snippet>
|
||||
<snippet>wa_companyhasasked</snippet>
|
||||
<snippet>wa_contractorcan</snippet>
|
||||
<snippet>wa_noemploymentintention</snippet>
|
||||
</snippet_group>
|
||||
<snippet_group set="agree">
|
||||
<!-- define agreement -->
|
||||
<snippet>ag_noemployment</snippet>
|
||||
<snippet>ag_companyinstructs</snippet>
|
||||
<snippet>ag_worktime</snippet>
|
||||
<snippet>ag_ownrisk</snippet>
|
||||
<snippet>ag_payment_single_engagement</snippet>
|
||||
<snippet>ag_biggerscopewarning</snippet>
|
||||
<snippet>ag_propertyrights</snippet>
|
||||
<snippet>ag_retainrights</snippet>
|
||||
<snippet>ag_nondisclosure</snippet>
|
||||
<snippet>ag_responsibilities</snippet>
|
||||
<snippet>ag_thirdparty</snippet>
|
||||
<snippet>ag_liability</snippet>
|
||||
<snippet>ag_provisions</snippet>
|
||||
<snippet>ag_generaltermsandconditions</snippet>
|
||||
</snippet_group>
|
||||
</selection>
|
||||
<selection subtype="fixed_term">
|
||||
<snippet_group set="parties">
|
||||
<!-- define parties in contract -->
|
||||
<snippet>parties</snippet>
|
||||
</snippet_group>
|
||||
<snippet_group set="whereas">
|
||||
<!-- define conditions -->
|
||||
<snippet>wa_contractorcan</snippet>
|
||||
<snippet>wa_noemploymentintention</snippet>
|
||||
</snippet_group>
|
||||
<snippet_group set="agree">
|
||||
<!-- define agreement -->
|
||||
<snippet>ag_period</snippet>
|
||||
<snippet>ag_noemployment</snippet>
|
||||
<snippet>ag_companyinstructs</snippet>
|
||||
<snippet>ag_ownrisk</snippet>
|
||||
<snippet>ag_workinghours</snippet>
|
||||
<snippet>ag_payment_fixed_term</snippet>
|
||||
<snippet>ag_biggerscopewarning</snippet>
|
||||
<snippet>ag_propertyrights</snippet>
|
||||
<snippet>ag_retainrights</snippet>
|
||||
<snippet>ag_nondisclosure</snippet>
|
||||
<snippet>ag_responsibilities</snippet>
|
||||
<snippet>ag_thirdparty</snippet>
|
||||
<snippet>ag_liability</snippet>
|
||||
<snippet>ag_provisions</snippet>
|
||||
<snippet>ag_generaltermsandconditions</snippet>
|
||||
</snippet_group>
|
||||
</selection>
|
||||
</document>
|
||||
</snippet_selection>
|
||||
File diff suppressed because one or more lines are too long
@@ -1,4 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?><fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format"><fo:layout-master-set><fo:simple-page-master margin-top="2cm" margin-bottom="1.8cm" margin-left="2cm" margin-right="2cm" page-height="29.7cm" page-width="21.0cm" master-name="Cover"><fo:region-body margin-top="1cm" margin-bottom="1cm" region-name="region-body"/><fo:region-before precedence="true" extent="0.6cm" region-name="region-before"/><fo:region-after precedence="true" extent="0.6cm" padding="0" region-name="region-after"/></fo:simple-page-master><fo:simple-page-master margin-top="2cm" margin-bottom="1.8cm" margin-left="2cm" margin-right="2cm" page-height="29.7cm" page-width="21.0cm" master-name="Content"><fo:region-body margin-top="1cm" margin-bottom="1cm" region-name="region-body"/><fo:region-before precedence="true" extent="0.6cm" region-name="region-before"/><fo:region-after precedence="true" extent="0.6cm" padding="0" region-name="region-after"/></fo:simple-page-master><fo:page-sequence-master master-name="Report"><fo:repeatable-page-master-alternatives><fo:conditional-page-master-reference master-reference="Cover" blank-or-not-blank="not-blank" page-position="first"/><fo:conditional-page-master-reference master-reference="Content" blank-or-not-blank="not-blank"/></fo:repeatable-page-master-alternatives></fo:page-sequence-master></fo:layout-master-set><fo:page-sequence master-reference="Report"><fo:static-content font-family="LiberationSansNarrow" font-size="12pt" color="black" flow-name="region-before"><fo:block text-align="right" font-weight="bold"/></fo:static-content><fo:static-content font-family="LiberationSansNarrow" font-size="12pt" color="black" flow-name="region-after"><fo:block text-align-last="justify"><fo:page-number/>/<fo:page-number-citation ref-id="EndOfDoc"/><fo:leader leader-pattern="space"/><fo:inline font-family="LiberationSansNarrow" font-size="8pt" color="black">Chamber of Commerce
|
||||
60628081</fo:inline></fo:block></fo:static-content><fo:flow font-family="LiberationSansNarrow" font-size="12pt" color="black" flow-name="region-body"><fo:block><fo:block margin-bottom="1.5cm"><fo:block font-weight="bold" keep-with-next.within-page="always" text-align="center" color="white" font-size="18pt" margin-bottom="1cm" background-color="#FF5C00">PENETRATION TESTING WAIVER</fo:block><fo:block margin-bottom="10pt" line-height="18pt"><fo:inline font-weight="bold"><fo:inline text-decoration="underline">...</fo:inline> (“...”)</fo:inline>, with its registered office at ..., ..., ...
|
||||
and duly represented by ....</fo:block><fo:block margin-bottom="10pt" line-height="18pt"><fo:inline font-weight="bold">WHEREAS:</fo:inline></fo:block><fo:block margin-bottom="10pt" line-height="18pt">A. ... wants some of its systems to be tested, Radically Open Security B.V. (“ROS”) has offered to perform such testing for and has accepted this offer. The assignment will be performed by ROS' core-team members, external freelancers, and/or volunteers (the “Consultants”).</fo:block><fo:block margin-bottom="10pt" line-height="18pt">B. Some of the activities performed by ROS and the Consultants during the course of this assignment could be considered illegal, unless ... has given permission for these activities. ROS and the Consultant will only perform such activities if they have received the required permission.</fo:block><fo:block margin-bottom="10pt" line-height="18pt">C. ... is willing to give such permission to ROS, the Consultants and any other person ROS might employ or engage for the assignment.</fo:block><fo:block margin-bottom="10pt" line-height="18pt"><fo:inline font-weight="bold">DECLARES AS FOLLOWS:</fo:inline></fo:block><fo:block margin-bottom="10pt" line-height="18pt">1. ... is aware that ROS will perform penetration testing services of the following systems of ..., as described below. The services are intended to gain insight in the security of these systems. To do so, ROS will access these systems, attempt to find vulnerabilities and gain further access and elevated privileges by exploiting any vulnerabilities found. ROS will test the following targets (the “<fo:inline font-weight="bold">Targets</fo:inline>”):</fo:block><fo:list-block margin-bottom="10pt" line-height="18pt" provisional-distance-between-starts="0.75cm" provisional-label-separation="2.5mm" space-after="12pt" start-indent="1cm"><fo:list-item><fo:list-item-label end-indent="label-end()"><fo:block><fo:inline>•</fo:inline></fo:block></fo:list-item-label><fo:list-item-body start-indent="body-start()"><fo:block>...</fo:block></fo:list-item-body></fo:list-item></fo:list-block><fo:block margin-bottom="10pt" line-height="18pt">2. ... hereby grants ROS and the Consultants on a date to be confirmed by email the broadest permission
|
||||
possible to perform the assignment, including the permission to:</fo:block><fo:block margin-bottom="10pt" line-height="18pt">a. enter and use the Targets;</fo:block><fo:block margin-bottom="10pt" line-height="18pt">b. circumvent, breach, remove and turn off any security measures protecting the Targets;</fo:block><fo:block margin-bottom="10pt" line-height="18pt">c. copy, intercept, record, amend, delete, render unusable or inaccessible any data stored on, processed by or transferred via the Targets; and</fo:block><fo:block margin-bottom="10pt" line-height="18pt">d. hinder the access or use of the Targets,</fo:block><fo:block margin-bottom="10pt" line-height="18pt">but ... only grants the permission for these activities to the extent that (i) such activities are necessary to perform the assignment and (ii) such activities do not disrupt the normal business operations of ....</fo:block><fo:block margin-bottom="10pt" line-height="18pt">3. The permission under Article 1 extends to all systems on which the Targets run, or which ROS or the Consultant might encounter while performing the assignment, regardless of whether these systems are owned by third parties.</fo:block><fo:block margin-bottom="10pt" line-height="18pt">4. ... warrants that it has the legal authority to give the permission set out under Articles 1 and 2. It also warrants it has obtained the necessary permissions from any third parties referred to under Article 3.</fo:block><fo:block margin-bottom="10pt" line-height="18pt">5. Should the public prosecutor initiate an investigation or criminal proceedings against ROS or any of the consultants it engaged or employed as a result of the performance of the assignment for the customer, then ... will co-operate fully with ROS in defending against this investigation or proceedings, including by providing any evidence it has which relates to this investigation or these proceedings.</fo:block><fo:block margin-top="1.5cm" keep-together.within-page="always"><fo:table width="100%" table-layout="fixed"><fo:table-column column-width="proportional-column-width(10)"/><fo:table-column column-width="proportional-column-width(90)"/><fo:table-body><fo:table-row><fo:table-cell padding="2pt" number-rows-spanned="4"><fo:block>Signed</fo:block></fo:table-cell><fo:table-cell padding="2pt"><fo:block margin-bottom="10pt" line-height="18pt">on June 8, 2015</fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding="2pt"><fo:block margin-bottom="10pt" line-height="18pt">in ...</fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding="2pt"><fo:block margin-bottom="10pt" line-height="18pt">by ...</fo:block></fo:table-cell></fo:table-row><fo:table-row><fo:table-cell padding="2pt"><fo:block margin-bottom="10pt" line-height="18pt">for ...</fo:block></fo:table-cell></fo:table-row></fo:table-body></fo:table></fo:block></fo:block></fo:block><fo:block id="EndOfDoc"/></fo:flow></fo:page-sequence></fo:root>
|
||||
File diff suppressed because one or more lines are too long
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -2,7 +2,7 @@
|
||||
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
|
||||
xmlns:xs="http://www.w3.org/2001/XMLSchema" exclude-result-prefixes="xs"
|
||||
xmlns:fo="http://www.w3.org/1999/XSL/Format" version="2.0">
|
||||
|
||||
|
||||
<xsl:variable name="denomination">
|
||||
<xsl:choose>
|
||||
<xsl:when test="/offerte/meta/pentestinfo/fee/@denomination = 'euro'">€</xsl:when>
|
||||
@@ -16,9 +16,10 @@
|
||||
|
||||
<xsl:template name="generate_targets_xslt">
|
||||
<xsl:param name="Ref" select="@Ref"/>
|
||||
<fo:list-block xsl:use-attribute-sets="list" provisional-distance-between-starts="0.75cm"
|
||||
<fo:list-block xsl:use-attribute-sets="list" provisional-distance-between-starts="0.75cm"
|
||||
provisional-label-separation="2.5mm" space-after="12pt" start-indent="1cm">
|
||||
<xsl:for-each select="/*/meta/targets/target[@Ref=$Ref] | /*/meta/targets/target[not(@Ref)]">
|
||||
<xsl:for-each
|
||||
select="/*/meta/targets/target[@Ref = $Ref] | /*/meta/targets/target[not(@Ref)]">
|
||||
<fo:list-item>
|
||||
<!-- insert a bullet -->
|
||||
<fo:list-item-label end-indent="label-end()">
|
||||
@@ -39,6 +40,7 @@
|
||||
|
||||
<xsl:template match="generate_findings">
|
||||
<xsl:variable name="Ref" select="@Ref"/>
|
||||
<xsl:variable name="status" select="@status"/>
|
||||
<fo:block>
|
||||
<fo:table width="100%" table-layout="fixed" xsl:use-attribute-sets="table borders">
|
||||
<xsl:call-template name="checkIfLast"/>
|
||||
@@ -66,7 +68,21 @@
|
||||
</fo:table-cell>
|
||||
</fo:table-row>
|
||||
<xsl:choose>
|
||||
<xsl:when test="@Ref">
|
||||
<xsl:when test="@status and @Ref">
|
||||
<!-- Only generate a table for findings in the section with this status AND this Ref -->
|
||||
<xsl:for-each
|
||||
select="/pentest_report/descendant::finding[@status = $status][ancestor::*[@id = $Ref]]">
|
||||
<xsl:call-template name="findingsSummaryContent"/>
|
||||
</xsl:for-each>
|
||||
</xsl:when>
|
||||
<xsl:when test="@status and not(@Ref)">
|
||||
<!-- Only generate a table for findings in the section with this status -->
|
||||
<xsl:for-each
|
||||
select="/pentest_report/descendant::finding[@status = $status]">
|
||||
<xsl:call-template name="findingsSummaryContent"/>
|
||||
</xsl:for-each>
|
||||
</xsl:when>
|
||||
<xsl:when test="@Ref and not(@status)">
|
||||
<!-- Only generate a table for findings in the section with this Ref -->
|
||||
<xsl:for-each
|
||||
select="/pentest_report/descendant::finding[ancestor::*[@id = $Ref]]">
|
||||
@@ -118,6 +134,7 @@
|
||||
|
||||
<xsl:template match="generate_recommendations">
|
||||
<xsl:variable name="Ref" select="@Ref"/>
|
||||
<xsl:variable name="status" select="@status"/>
|
||||
<fo:block>
|
||||
<fo:table width="100%" table-layout="fixed" xsl:use-attribute-sets="table borders">
|
||||
<xsl:call-template name="checkIfLast"/>
|
||||
@@ -140,7 +157,21 @@
|
||||
</fo:table-cell>
|
||||
</fo:table-row>
|
||||
<xsl:choose>
|
||||
<xsl:when test="@Ref">
|
||||
<xsl:when test="@status and @Ref">
|
||||
<!-- Only generate a table for findings in the section with this status AND this Ref -->
|
||||
<xsl:for-each
|
||||
select="/pentest_report/descendant::finding[@status = $status][ancestor::*[@id = $Ref]]">
|
||||
<xsl:call-template name="recommendationsSummaryContent"/>
|
||||
</xsl:for-each>
|
||||
</xsl:when>
|
||||
<xsl:when test="@status and not(@Ref)">
|
||||
<!-- Only generate a table for findings in the section with this status -->
|
||||
<xsl:for-each
|
||||
select="/pentest_report/descendant::finding[@status = $status]">
|
||||
<xsl:call-template name="recommendationsSummaryContent"/>
|
||||
</xsl:for-each>
|
||||
</xsl:when>
|
||||
<xsl:when test="@Ref and not(@status)">
|
||||
<!-- Only generate a table for findings in the section with this Ref -->
|
||||
<xsl:for-each
|
||||
select="/pentest_report/descendant::finding[ancestor::*[@id = $Ref]]">
|
||||
@@ -209,19 +240,20 @@
|
||||
</fo:table-row>
|
||||
</xsl:for-each>
|
||||
<xsl:for-each select="/pentest_report/meta/collaborators/pentesters/pentester">
|
||||
<xsl:if test="not(./name = /pentest_report/meta/collaborators/approver/name)">
|
||||
<xsl:if
|
||||
test="not(./name = /pentest_report/meta/collaborators/approver/name)">
|
||||
<fo:table-row xsl:use-attribute-sets="borders">
|
||||
<fo:table-cell xsl:use-attribute-sets="td">
|
||||
<fo:block>
|
||||
<xsl:apply-templates select="name"/>
|
||||
</fo:block>
|
||||
</fo:table-cell>
|
||||
<fo:table-cell xsl:use-attribute-sets="td">
|
||||
<fo:block>
|
||||
<xsl:apply-templates select="bio"/>
|
||||
</fo:block>
|
||||
</fo:table-cell>
|
||||
</fo:table-row>
|
||||
<fo:table-cell xsl:use-attribute-sets="td">
|
||||
<fo:block>
|
||||
<xsl:apply-templates select="name"/>
|
||||
</fo:block>
|
||||
</fo:table-cell>
|
||||
<fo:table-cell xsl:use-attribute-sets="td">
|
||||
<fo:block>
|
||||
<xsl:apply-templates select="bio"/>
|
||||
</fo:block>
|
||||
</fo:table-cell>
|
||||
</fo:table-row>
|
||||
</xsl:if>
|
||||
</xsl:for-each>
|
||||
</fo:table-body>
|
||||
@@ -235,11 +267,14 @@
|
||||
<xsl:with-param name="latestVersionDate" select="$latestVersionDate"/>
|
||||
</xsl:call-template>
|
||||
</xsl:template>
|
||||
|
||||
|
||||
<xsl:template name="generateSignatureBox">
|
||||
<xsl:param name="latestVersionDate"/>
|
||||
<fo:block keep-together.within-page="always" xsl:use-attribute-sets="signaturebox">
|
||||
<fo:block xsl:use-attribute-sets="title-client">SIGNED IN DUPLICATE</fo:block>
|
||||
<fo:block xsl:use-attribute-sets="title-client">
|
||||
<xsl:call-template name="getString">
|
||||
<xsl:with-param name="stringID" select="'signed_dupe'"/>
|
||||
</xsl:call-template></fo:block>
|
||||
<fo:block>
|
||||
<fo:table width="100%" table-layout="fixed" xsl:use-attribute-sets="borders">
|
||||
<fo:table-column column-width="proportional-column-width(50)"
|
||||
@@ -261,25 +296,11 @@
|
||||
</fo:table-row>
|
||||
<fo:table-row>
|
||||
<fo:table-cell xsl:use-attribute-sets="td">
|
||||
<fo:block>
|
||||
<xsl:choose>
|
||||
<xsl:when test="/offerte">
|
||||
|
||||
<xsl:value-of
|
||||
select="/*/meta/permission_parties/client/city"/>
|
||||
|
||||
</xsl:when>
|
||||
<xsl:when test="/quickscope">
|
||||
|
||||
<xsl:value-of select="/*/customer/city"/>
|
||||
|
||||
</xsl:when>
|
||||
</xsl:choose>
|
||||
</fo:block>
|
||||
<fo:block><xsl:value-of select="/*/customer/city"/></fo:block>
|
||||
</fo:table-cell>
|
||||
<fo:table-cell xsl:use-attribute-sets="td">
|
||||
<fo:block>
|
||||
<xsl:text>Amsterdam</xsl:text>
|
||||
<fo:block><xsl:value-of
|
||||
select="/*/meta/company/city"/>
|
||||
</fo:block>
|
||||
</fo:table-cell>
|
||||
</fo:table-row>
|
||||
@@ -381,164 +402,5 @@
|
||||
</xsl:for-each>
|
||||
</xsl:template>
|
||||
|
||||
<!-- PLACEHOLDERS -->
|
||||
<xsl:template match="client_long">
|
||||
<xsl:param name="placeholderElement" select="/*/meta//client/full_name"/>
|
||||
<xsl:call-template name="checkPlaceholder">
|
||||
<xsl:with-param name="placeholderElement" select="$placeholderElement"/>
|
||||
</xsl:call-template>
|
||||
</xsl:template>
|
||||
<xsl:template match="client_short">
|
||||
<xsl:param name="placeholderElement" select="/*/meta//client/short_name"/>
|
||||
<xsl:call-template name="checkPlaceholder">
|
||||
<xsl:with-param name="placeholderElement" select="$placeholderElement"/>
|
||||
</xsl:call-template>
|
||||
</xsl:template>
|
||||
<xsl:template match="client_street">
|
||||
<xsl:param name="placeholderElement" select="/*/meta//client/address"/>
|
||||
<xsl:call-template name="checkPlaceholder">
|
||||
<xsl:with-param name="placeholderElement" select="$placeholderElement"/>
|
||||
</xsl:call-template>
|
||||
</xsl:template>
|
||||
<xsl:template match="client_city">
|
||||
<xsl:param name="placeholderElement" select="/*/meta//client/city"/>
|
||||
<xsl:call-template name="checkPlaceholder">
|
||||
<xsl:with-param name="placeholderElement" select="$placeholderElement"/>
|
||||
</xsl:call-template>
|
||||
</xsl:template>
|
||||
<xsl:template match="client_country">
|
||||
<xsl:param name="placeholderElement" select="/*/meta//client/country"/>
|
||||
<xsl:call-template name="checkPlaceholder">
|
||||
<xsl:with-param name="placeholderElement" select="$placeholderElement"/>
|
||||
</xsl:call-template>
|
||||
</xsl:template>
|
||||
<xsl:template match="client_legal_rep">
|
||||
<xsl:param name="placeholderElement" select="/offerte/meta/permission_parties/client/legal_rep"/>
|
||||
<xsl:call-template name="checkPlaceholder">
|
||||
<xsl:with-param name="placeholderElement" select="$placeholderElement"/>
|
||||
</xsl:call-template>
|
||||
</xsl:template>
|
||||
<xsl:template match="client_waiver_rep">
|
||||
<xsl:param name="placeholderElement" select="/*/meta/permission_parties/client/waiver_rep"/>
|
||||
<xsl:call-template name="checkPlaceholder">
|
||||
<xsl:with-param name="placeholderElement" select="$placeholderElement"/>
|
||||
</xsl:call-template>
|
||||
</xsl:template>
|
||||
<xsl:template match="client_poc1">
|
||||
<xsl:param name="placeholderElement" select="/*/meta/permission_parties/client/poc1"/>
|
||||
<xsl:call-template name="checkPlaceholder">
|
||||
<xsl:with-param name="placeholderElement" select="$placeholderElement"/>
|
||||
</xsl:call-template>
|
||||
</xsl:template>
|
||||
<xsl:template match="client_coc">
|
||||
<xsl:param name="placeholderElement" select="/*/meta/permission_parties/client/coc"/>
|
||||
<xsl:call-template name="checkPlaceholder">
|
||||
<xsl:with-param name="placeholderElement" select="$placeholderElement"/>
|
||||
</xsl:call-template>
|
||||
</xsl:template>
|
||||
<xsl:template match="company_long">
|
||||
<xsl:param name="placeholderElement" select="/*/meta/company/full_name"/>
|
||||
<xsl:call-template name="checkPlaceholder">
|
||||
<xsl:with-param name="placeholderElement" select="$placeholderElement"/>
|
||||
</xsl:call-template>
|
||||
</xsl:template>
|
||||
<xsl:template match="company_short">
|
||||
<xsl:param name="placeholderElement" select="/*/meta/company/short_name"/>
|
||||
<xsl:call-template name="checkPlaceholder">
|
||||
<xsl:with-param name="placeholderElement" select="$placeholderElement"/>
|
||||
</xsl:call-template>
|
||||
</xsl:template>
|
||||
<xsl:template match="company_svc_long">
|
||||
<xsl:param name="placeholderElement" select="/*/meta/offered_service_long"/>
|
||||
<xsl:call-template name="checkPlaceholder">
|
||||
<xsl:with-param name="placeholderElement" select="$placeholderElement"/>
|
||||
</xsl:call-template>
|
||||
</xsl:template>
|
||||
<xsl:template match="company_svc_short">
|
||||
<xsl:param name="placeholderElement" select="/*/meta/offered_service_short"/>
|
||||
<xsl:call-template name="checkPlaceholder">
|
||||
<xsl:with-param name="placeholderElement" select="$placeholderElement"/>
|
||||
</xsl:call-template>
|
||||
</xsl:template>
|
||||
<xsl:template match="company_legal_rep">
|
||||
<xsl:param name="placeholderElement" select="/*/meta/company/legal_rep"/>
|
||||
<xsl:call-template name="checkPlaceholder">
|
||||
<xsl:with-param name="placeholderElement" select="$placeholderElement"/>
|
||||
</xsl:call-template>
|
||||
</xsl:template>
|
||||
<xsl:template match="company_poc1">
|
||||
<xsl:param name="placeholderElement" select="/*/meta/company/poc1"/>
|
||||
<xsl:call-template name="checkPlaceholder">
|
||||
<xsl:with-param name="placeholderElement" select="$placeholderElement"/>
|
||||
</xsl:call-template>
|
||||
</xsl:template>
|
||||
<xsl:template match="t_app">
|
||||
<xsl:param name="placeholderElement" select="/*/meta/pentestinfo/target_application"/>
|
||||
<xsl:call-template name="checkPlaceholder">
|
||||
<xsl:with-param name="placeholderElement" select="$placeholderElement"/>
|
||||
</xsl:call-template>
|
||||
</xsl:template>
|
||||
<xsl:template match="t_app_producer">
|
||||
<xsl:param name="placeholderElement" select="/*/meta/pentestinfo/target_application_producer"/>
|
||||
<xsl:call-template name="checkPlaceholder">
|
||||
<xsl:with-param name="placeholderElement" select="$placeholderElement"/>
|
||||
</xsl:call-template>
|
||||
</xsl:template>
|
||||
<xsl:template match="p_duration">
|
||||
<xsl:param name="placeholderElement" select="/*/meta/pentestinfo/duration"/>
|
||||
<xsl:call-template name="checkPlaceholder">
|
||||
<xsl:with-param name="placeholderElement" select="$placeholderElement"/>
|
||||
</xsl:call-template>
|
||||
</xsl:template>
|
||||
<xsl:template match="p_boxtype">
|
||||
<xsl:param name="placeholderElement" select="/*/meta/pentestinfo/type"/>
|
||||
<xsl:call-template name="checkPlaceholder">
|
||||
<xsl:with-param name="placeholderElement" select="$placeholderElement"/>
|
||||
</xsl:call-template>
|
||||
</xsl:template>
|
||||
<xsl:template match="p_fee">
|
||||
<xsl:param name="placeholderElement" select="/*/meta/pentestinfo/fee"/>
|
||||
<xsl:value-of select="$denomination"/><xsl:text> </xsl:text>
|
||||
<xsl:call-template name="checkPlaceholder">
|
||||
<xsl:with-param name="placeholderElement" select="$placeholderElement"/>
|
||||
</xsl:call-template>
|
||||
</xsl:template>
|
||||
<xsl:template match="p_testingduration">
|
||||
<xsl:param name="placeholderElement" select="/*/meta/pentestinfo/test_planning"/>
|
||||
<xsl:call-template name="checkPlaceholder">
|
||||
<xsl:with-param name="placeholderElement" select="$placeholderElement"/>
|
||||
</xsl:call-template>
|
||||
</xsl:template>
|
||||
<xsl:template match="p_reportwritingduration">
|
||||
<xsl:param name="placeholderElement" select="/*/meta/pentestinfo/report_writing"/>
|
||||
<xsl:call-template name="checkPlaceholder">
|
||||
<xsl:with-param name="placeholderElement" select="$placeholderElement"/>
|
||||
</xsl:call-template>
|
||||
</xsl:template>
|
||||
<xsl:template match="p_reportdue">
|
||||
<xsl:param name="placeholderElement" select="/*/meta/pentestinfo/report_due"/>
|
||||
<xsl:call-template name="checkPlaceholder">
|
||||
<xsl:with-param name="placeholderElement" select="$placeholderElement"/>
|
||||
</xsl:call-template>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template name="checkPlaceholder">
|
||||
<xsl:param name="placeholderElement" select="/"/>
|
||||
<xsl:choose>
|
||||
<xsl:when test="normalize-space($placeholderElement)"><!-- placeholder exists and contains text -->
|
||||
<xsl:choose>
|
||||
<xsl:when test="self::p_fee"><!-- pretty numbering for fee -->
|
||||
<xsl:variable name="fee" select="$placeholderElement * 1"/>
|
||||
<xsl:number value="$fee" grouping-separator="," grouping-size="3"/>
|
||||
</xsl:when>
|
||||
<xsl:otherwise>
|
||||
<xsl:value-of select="$placeholderElement"/>
|
||||
</xsl:otherwise>
|
||||
</xsl:choose>
|
||||
</xsl:when>
|
||||
<xsl:otherwise>
|
||||
<fo:inline xsl:use-attribute-sets="errortext">XXXXXX</fo:inline>
|
||||
</xsl:otherwise>
|
||||
</xsl:choose>
|
||||
</xsl:template>
|
||||
</xsl:stylesheet>
|
||||
@@ -33,6 +33,12 @@
|
||||
</fo:block>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template match="li/p">
|
||||
<fo:block xsl:use-attribute-sets="li">
|
||||
<xsl:apply-templates/>
|
||||
</fo:block>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template match="p" mode="summarytable">
|
||||
<xsl:apply-templates mode="summarytable"/>
|
||||
</xsl:template>
|
||||
|
||||
@@ -1,68 +1,103 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
|
||||
xmlns:xs="http://www.w3.org/2001/XMLSchema"
|
||||
exclude-result-prefixes="xs" xmlns:fo="http://www.w3.org/1999/XSL/Format"
|
||||
version="2.0">
|
||||
xmlns:xs="http://www.w3.org/2001/XMLSchema" exclude-result-prefixes="xs"
|
||||
xmlns:fo="http://www.w3.org/1999/XSL/Format" version="2.0">
|
||||
|
||||
<xsl:template match="finding" mode="meta">
|
||||
<fo:block xsl:use-attribute-sets="finding-meta">
|
||||
<fo:inline xsl:use-attribute-sets="bold">Vulnerability ID: </fo:inline>
|
||||
<xsl:apply-templates select="." mode="number"/>
|
||||
</fo:block>
|
||||
<fo:block xsl:use-attribute-sets="finding-meta">
|
||||
<fo:inline xsl:use-attribute-sets="bold">Vulnerability type: </fo:inline>
|
||||
<xsl:value-of select="@type"/>
|
||||
</fo:block>
|
||||
<fo:block xsl:use-attribute-sets="finding-meta">
|
||||
<xsl:attribute name="margin-bottom" select="$large-space"/>
|
||||
<fo:inline xsl:use-attribute-sets="bold">Threat level: </fo:inline>
|
||||
<xsl:value-of select="@threatLevel"/>
|
||||
</fo:block>
|
||||
<fo:table width="100%" table-layout="fixed" xsl:use-attribute-sets="table" margin-bottom="{$large-space}">
|
||||
<fo:table-column column-width="proportional-column-width(70)"/>
|
||||
<fo:table-column column-width="proportional-column-width(30)"/>
|
||||
<fo:table-body>
|
||||
<fo:table-row>
|
||||
<fo:table-cell xsl:use-attribute-sets="td">
|
||||
<xsl:if test="not(@status)"><xsl:attribute name="number-columns-spanned">2</xsl:attribute></xsl:if>
|
||||
<fo:block xsl:use-attribute-sets="finding-meta">
|
||||
<fo:inline xsl:use-attribute-sets="bold">Vulnerability ID: </fo:inline>
|
||||
<xsl:apply-templates select="." mode="number"/>
|
||||
</fo:block>
|
||||
</fo:table-cell>
|
||||
<xsl:if test="@status">
|
||||
<fo:table-cell xsl:use-attribute-sets="td">
|
||||
<fo:block xsl:use-attribute-sets="finding-meta">
|
||||
<fo:inline xsl:use-attribute-sets="bold">Retest status: </fo:inline>
|
||||
<xsl:value-of select="@status"/>
|
||||
</fo:block>
|
||||
</fo:table-cell>
|
||||
</xsl:if>
|
||||
</fo:table-row>
|
||||
<fo:table-row>
|
||||
<fo:table-cell xsl:use-attribute-sets="td" number-columns-spanned="2">
|
||||
<fo:block xsl:use-attribute-sets="finding-meta">
|
||||
<fo:inline xsl:use-attribute-sets="bold">Vulnerability type: </fo:inline>
|
||||
<xsl:value-of select="@type"/>
|
||||
</fo:block>
|
||||
</fo:table-cell>
|
||||
</fo:table-row>
|
||||
<fo:table-row>
|
||||
<fo:table-cell xsl:use-attribute-sets="td" number-columns-spanned="2">
|
||||
<fo:block xsl:use-attribute-sets="finding-meta">
|
||||
<fo:inline xsl:use-attribute-sets="bold">Threat level: </fo:inline>
|
||||
<xsl:value-of select="@threatLevel"/>
|
||||
</fo:block>
|
||||
</fo:table-cell>
|
||||
|
||||
</fo:table-row>
|
||||
|
||||
</fo:table-body>
|
||||
</fo:table>
|
||||
|
||||
|
||||
|
||||
|
||||
</xsl:template>
|
||||
|
||||
|
||||
<!-- ignore summary-table-only elements in the findings -->
|
||||
<xsl:template match="description_summary|recommendation_summary"/>
|
||||
|
||||
<xsl:template match="description_summary | recommendation_summary"/>
|
||||
|
||||
<xsl:template match="description">
|
||||
<fo:block xsl:use-attribute-sets="title-4">Description:</fo:block>
|
||||
<fo:block margin-bottom="{$large-space}">
|
||||
<xsl:apply-templates/>
|
||||
</fo:block>
|
||||
</xsl:template>
|
||||
|
||||
|
||||
<xsl:template match="description" mode="summarytable">
|
||||
<xsl:if test="img|table">
|
||||
<xsl:message>WARNING: description containing img or table may not look very good in the finding summary table. Consider using a description_summary element instead.</xsl:message>
|
||||
</xsl:if>
|
||||
<xsl:apply-templates mode="summarytable"/>
|
||||
<xsl:if test="img | table">
|
||||
<xsl:message>WARNING: description containing img or table may not look very good in the
|
||||
finding summary table. Consider using a description_summary element
|
||||
instead.</xsl:message>
|
||||
</xsl:if>
|
||||
<xsl:apply-templates mode="summarytable"/>
|
||||
</xsl:template>
|
||||
|
||||
|
||||
<xsl:template match="technicaldescription">
|
||||
<fo:block xsl:use-attribute-sets="title-4">Technical description:</fo:block>
|
||||
<fo:block margin-bottom="{$large-space}">
|
||||
<xsl:apply-templates/>
|
||||
</fo:block>
|
||||
</xsl:template>
|
||||
|
||||
|
||||
<xsl:template match="impact">
|
||||
<fo:block xsl:use-attribute-sets="title-4">Impact:</fo:block>
|
||||
<fo:block margin-bottom="{$large-space}">
|
||||
<xsl:apply-templates/>
|
||||
</fo:block>
|
||||
</xsl:template>
|
||||
|
||||
|
||||
<xsl:template match="recommendation">
|
||||
<fo:block xsl:use-attribute-sets="title-4">Recommendation:</fo:block>
|
||||
<fo:block margin-bottom="{$large-space}">
|
||||
<xsl:apply-templates/>
|
||||
</fo:block>
|
||||
</xsl:template>
|
||||
|
||||
|
||||
<xsl:template match="recommendation" mode="summarytable">
|
||||
<xsl:if test="img|table">
|
||||
<xsl:message>WARNING: recommendation containing img or table may not look very good in the finding summary table. Consider using a recommendation_summary element instead.</xsl:message>
|
||||
<xsl:if test="img | table">
|
||||
<xsl:message>WARNING: recommendation containing img or table may not look very good in
|
||||
the finding summary table. Consider using a recommendation_summary element
|
||||
instead.</xsl:message>
|
||||
</xsl:if>
|
||||
<xsl:apply-templates mode="summarytable"/>
|
||||
</xsl:template>
|
||||
|
||||
</xsl:stylesheet>
|
||||
|
||||
</xsl:stylesheet>
|
||||
|
||||
@@ -11,7 +11,7 @@
|
||||
<xsl:import href="att-set.xslt"/>
|
||||
<xsl:import href="block.xslt"/>
|
||||
<xsl:import href="findings.xslt"/>
|
||||
<xsl:import href="auto.xsl"/>
|
||||
<xsl:import href="auto.xslt"/>
|
||||
<xsl:import href="table.xslt"/>
|
||||
<xsl:import href="lists.xslt"/>
|
||||
<xsl:import href="inline.xslt"/>
|
||||
|
||||
189
xml/xslt/generate_contract.xsl
Normal file
189
xml/xslt/generate_contract.xsl
Normal file
@@ -0,0 +1,189 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
|
||||
xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||
xmlns:fo="http://www.w3.org/1999/XSL/Format" exclude-result-prefixes="xs" version="2.0">
|
||||
|
||||
|
||||
<xsl:import href="pages.xslt"/>
|
||||
<xsl:import href="toc.xslt"/>
|
||||
<xsl:import href="structure.xslt"/>
|
||||
<xsl:import href="att-set.xslt"/>
|
||||
<xsl:import href="block.xslt"/>
|
||||
<xsl:import href="auto.xslt"/>
|
||||
<xsl:import href="table.xslt"/>
|
||||
<xsl:import href="lists.xslt"/>
|
||||
<xsl:import href="inline.xslt"/>
|
||||
<xsl:import href="graphics.xslt"/>
|
||||
<xsl:import href="generic.xslt"/>
|
||||
<xsl:import href="numbering.xslt"/>
|
||||
<xsl:import href="localisation.xslt"/>
|
||||
<xsl:import href="placeholders.xslt"/>
|
||||
<xsl:import href="snippets.xslt"/>
|
||||
|
||||
<xsl:include href="styles_con.xslt"/>
|
||||
|
||||
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="no"/>
|
||||
|
||||
|
||||
<!-- ****** AUTO_NUMBERING_FORMAT: value of the <xsl:number> element used for auto numbering -->
|
||||
<xsl:param name="AUTO_NUMBERING_FORMAT" select="'1.1.1'"/>
|
||||
|
||||
|
||||
<xsl:key name="rosid" match="section | finding | appendix | non-finding" use="@id"/>
|
||||
<xsl:key name="biblioid" match="biblioentry" use="@id"/>
|
||||
|
||||
|
||||
<xsl:variable name="CLASSES" select="document('../xslt/styles_con.xslt')/*/xsl:attribute-set"/>
|
||||
|
||||
<xsl:variable name="lang" select="/*/@xml:lang"/>
|
||||
<xsl:variable name="localDateFormat" select="$strdoc/date/format[lang($lang)]"/>
|
||||
<xsl:variable name="fee" select="/contract/meta/contractor/hourly_fee * 1"/>
|
||||
<xsl:variable name="plannedHours" select="/contract/meta/work/planning/hours * 1"/>
|
||||
<xsl:variable name="total_fee" select="$fee * $plannedHours"/>
|
||||
<xsl:variable name="denomination">
|
||||
<xsl:choose>
|
||||
<xsl:when test="/contract/meta/contractor/hourly_fee/@denomination = 'eur'">€</xsl:when>
|
||||
<xsl:when test="/contract/meta/contractor/hourly_fee/@denomination = 'gbp'">£</xsl:when>
|
||||
<xsl:when test="/contract/meta/contractor/hourly_fee/@denomination = 'usd'">$</xsl:when>
|
||||
</xsl:choose>
|
||||
</xsl:variable>
|
||||
|
||||
<xsl:param name="latestVersionDate"><!-- we're not using versions for contracts, but the contract date will do just fine -->
|
||||
<xsl:value-of select="format-date(/contract/meta/work/start_date, '[MNn] [D1], [Y]', 'en', (), ())"/>
|
||||
</xsl:param>
|
||||
|
||||
<!-- ROOT -->
|
||||
<xsl:template match="/">
|
||||
|
||||
<fo:root>
|
||||
|
||||
<xsl:call-template name="layout-master-set"/>
|
||||
<xsl:call-template name="Content"/>
|
||||
|
||||
</fo:root>
|
||||
</xsl:template>
|
||||
|
||||
<!-- OVERRIDES -->
|
||||
|
||||
|
||||
<!-- NO FRONT PAGE FOR META, JUST A HEADER -->
|
||||
<xsl:template match="meta"/>
|
||||
|
||||
|
||||
<!-- TITLES (NO NUMBERING) -->
|
||||
<xsl:template match="title">
|
||||
<xsl:variable name="LEVEL" select="count(ancestor::*) - 1"/>
|
||||
<xsl:variable name="CLASS">
|
||||
<!-- use title-x for all levels -->
|
||||
<xsl:text>title-</xsl:text>
|
||||
<xsl:value-of select="$LEVEL"/>
|
||||
</xsl:variable>
|
||||
|
||||
<fo:block>
|
||||
<xsl:call-template name="use-att-set">
|
||||
<xsl:with-param name="CLASS" select="$CLASS"/>
|
||||
</xsl:call-template>
|
||||
<xsl:apply-templates/>
|
||||
</fo:block>
|
||||
</xsl:template>
|
||||
|
||||
<!-- TITLES (ALL CAPS) -->
|
||||
<xsl:template match="title/text()">
|
||||
<xsl:value-of select="upper-case(.)"/>
|
||||
</xsl:template>
|
||||
|
||||
|
||||
<xsl:template match="generate_contract_signature_box">
|
||||
<fo:block keep-together.within-page="always" xsl:use-attribute-sets="signaturebox">
|
||||
<fo:block>
|
||||
<fo:table width="100%" table-layout="fixed" xsl:use-attribute-sets="borders">
|
||||
<fo:table-column column-width="proportional-column-width(50)"
|
||||
xsl:use-attribute-sets="borders"/>
|
||||
<fo:table-column column-width="proportional-column-width(50)"
|
||||
xsl:use-attribute-sets="borders"/>
|
||||
<fo:table-body>
|
||||
<fo:table-row>
|
||||
<fo:table-cell xsl:use-attribute-sets="td">
|
||||
<fo:block><xsl:value-of
|
||||
select="/contract/meta/contractor/city"/>
|
||||
</fo:block>
|
||||
</fo:table-cell>
|
||||
<fo:table-cell xsl:use-attribute-sets="td">
|
||||
<fo:block><xsl:value-of
|
||||
select="/*/meta/company/city"/>
|
||||
</fo:block>
|
||||
</fo:table-cell>
|
||||
</fo:table-row>
|
||||
<fo:table-row>
|
||||
<fo:table-cell xsl:use-attribute-sets="td">
|
||||
<fo:block> </fo:block>
|
||||
<fo:block> </fo:block>
|
||||
</fo:table-cell>
|
||||
<fo:table-cell xsl:use-attribute-sets="td">
|
||||
<fo:block> </fo:block>
|
||||
<fo:block> </fo:block>
|
||||
</fo:table-cell>
|
||||
</fo:table-row>
|
||||
<fo:table-row>
|
||||
<fo:table-cell xsl:use-attribute-sets="td">
|
||||
<fo:block><xsl:value-of
|
||||
select="/*/meta/contractor/name"/></fo:block>
|
||||
</fo:table-cell>
|
||||
<fo:table-cell xsl:use-attribute-sets="td">
|
||||
<fo:block><xsl:value-of select="/*/meta/company/legal_rep"/></fo:block>
|
||||
</fo:table-cell>
|
||||
</fo:table-row>
|
||||
<fo:table-row>
|
||||
<fo:table-cell xsl:use-attribute-sets="td">
|
||||
<fo:block xsl:use-attribute-sets="bold"><xsl:value-of select="/*/meta/contractor/ctcompany"/></fo:block>
|
||||
</fo:table-cell>
|
||||
<fo:table-cell xsl:use-attribute-sets="td">
|
||||
<fo:block xsl:use-attribute-sets="bold"><xsl:value-of select="/*/meta/company/full_name"/>
|
||||
</fo:block>
|
||||
</fo:table-cell>
|
||||
</fo:table-row>
|
||||
</fo:table-body>
|
||||
</fo:table>
|
||||
</fo:block>
|
||||
</fo:block>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template name="page_header">
|
||||
<fo:static-content flow-name="region-before-cover" xsl:use-attribute-sets="HeaderFont">
|
||||
<fo:block>
|
||||
<fo:table width="100%" table-layout="fixed">
|
||||
<fo:table-column column-width="proportional-column-width(40)"/>
|
||||
<fo:table-column column-width="proportional-column-width(20)"/>
|
||||
<fo:table-column column-width="proportional-column-width(40)"/>
|
||||
<fo:table-body>
|
||||
<fo:table-row>
|
||||
<fo:table-cell text-align="right" display-align="after" padding-bottom="5mm">
|
||||
<fo:block xsl:use-attribute-sets="TinyFont">
|
||||
<fo:block xsl:use-attribute-sets="bold orange-text"><xsl:value-of select="/*/meta/company/full_name"/></fo:block>
|
||||
<fo:block><xsl:value-of select="/*/meta/company/address"/></fo:block>
|
||||
<fo:block><xsl:value-of select="/*/meta/company/postal_code"/> <xsl:value-of select="/*/meta/company/city"/></fo:block>
|
||||
<fo:block><xsl:value-of select="/*/meta/company/country"/></fo:block>
|
||||
</fo:block>
|
||||
</fo:table-cell>
|
||||
<fo:table-cell text-align="center">
|
||||
<fo:block><fo:external-graphic xsl:use-attribute-sets="logo"/></fo:block>
|
||||
</fo:table-cell>
|
||||
<fo:table-cell display-align="after" padding-bottom="5mm">
|
||||
<fo:block xsl:use-attribute-sets="TinyFont">
|
||||
<fo:block xsl:use-attribute-sets="bold orange-text"><xsl:value-of select="/*/meta/company/website"/></fo:block>
|
||||
<fo:block><xsl:value-of select="/*/meta/company/email"/></fo:block>
|
||||
<fo:block>Chamber of Commerce <xsl:value-of select="/*/meta/company/coc"/></fo:block>
|
||||
<fo:block>VAT number <xsl:value-of select="/*/meta/company/vat_no"/></fo:block>
|
||||
</fo:block>
|
||||
</fo:table-cell>
|
||||
</fo:table-row>
|
||||
</fo:table-body>
|
||||
</fo:table>
|
||||
</fo:block>
|
||||
</fo:static-content>
|
||||
<fo:static-content flow-name="region-before-content" xsl:use-attribute-sets="HeaderFont">
|
||||
<fo:block xsl:use-attribute-sets="header"/>
|
||||
</fo:static-content>
|
||||
</xsl:template>
|
||||
|
||||
</xsl:stylesheet>
|
||||
@@ -11,13 +11,14 @@
|
||||
<xsl:import href="att-set.xslt"/>
|
||||
<xsl:import href="block.xslt"/>
|
||||
<xsl:import href="findings.xslt"/>
|
||||
<xsl:import href="auto.xsl"/>
|
||||
<xsl:import href="auto.xslt"/>
|
||||
<xsl:import href="table.xslt"/>
|
||||
<xsl:import href="lists.xslt"/>
|
||||
<xsl:import href="inline.xslt"/>
|
||||
<xsl:import href="graphics.xslt"/>
|
||||
<xsl:import href="generic.xslt"/>
|
||||
<xsl:import href="numbering.xslt"/>
|
||||
<xsl:import href="localisation.xslt"/>
|
||||
|
||||
<xsl:include href="styles_rep.xslt"/>
|
||||
|
||||
@@ -28,8 +29,10 @@
|
||||
<xsl:param name="AUTO_NUMBERING_FORMAT" select="'1.1.1'"/>
|
||||
|
||||
<xsl:key name="rosid" match="section|appendix" use="@id"/>
|
||||
<xsl:key name="biblioid" match="biblioentry" use="@id"/>
|
||||
|
||||
<xsl:variable name="CLASSES" select="document('../xslt/styles_doc.xslt')/*/xsl:attribute-set"/>
|
||||
<xsl:variable name="lang" select="/*/@xml:lang"/>
|
||||
|
||||
<xsl:variable name="latestVersionDate">
|
||||
<xsl:for-each select="/*/meta/version_history/version">
|
||||
|
||||
@@ -11,7 +11,7 @@
|
||||
<xsl:import href="att-set.xslt"/>
|
||||
<xsl:import href="block.xslt"/>
|
||||
<xsl:import href="findings.xslt"/>
|
||||
<xsl:import href="auto.xsl"/>
|
||||
<xsl:import href="auto.xslt"/>
|
||||
<xsl:import href="table.xslt"/>
|
||||
<xsl:import href="lists.xslt"/>
|
||||
<xsl:import href="inline.xslt"/>
|
||||
@@ -46,21 +46,13 @@
|
||||
</xsl:choose>
|
||||
</xsl:param>
|
||||
<!-- ROOT -->
|
||||
<xsl:template match="/offerte">
|
||||
<xsl:template match="/offerte | /invoice">
|
||||
<!-- Invoice is generated straight from offerte -->
|
||||
<fo:root>
|
||||
<xsl:call-template name="layout-master-set-invoice"/>
|
||||
<xsl:call-template name="layout-master-set"/>
|
||||
<xsl:call-template name="Content"/>
|
||||
</fo:root>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template match="/invoice">
|
||||
<!-- Invoice is generated from custom invoice xml -->
|
||||
<fo:root>
|
||||
<xsl:call-template name="layout-master-set-invoice"/>
|
||||
<xsl:call-template name="Content"/>
|
||||
</fo:root>
|
||||
</xsl:template>
|
||||
|
||||
<!-- CONTENT -->
|
||||
<xsl:template name="invoice_from_offerte">
|
||||
@@ -251,7 +243,7 @@
|
||||
|
||||
<!-- overrules for pages.xslt -->
|
||||
<xsl:template name="Content">
|
||||
<fo:page-sequence master-reference="Invoice">
|
||||
<fo:page-sequence master-reference="Report">
|
||||
<xsl:call-template name="page_header"/>
|
||||
<xsl:call-template name="page_footer"/>
|
||||
<fo:flow flow-name="region-body" xsl:use-attribute-sets="DefaultFont">
|
||||
@@ -270,7 +262,7 @@
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template name="page_header">
|
||||
<fo:static-content flow-name="region-before" xsl:use-attribute-sets="HeaderFont">
|
||||
<fo:static-content flow-name="region-before-cover" xsl:use-attribute-sets="HeaderFont">
|
||||
<fo:block>
|
||||
<fo:table width="100%" table-layout="fixed">
|
||||
<fo:table-column column-width="proportional-column-width(40)"/>
|
||||
@@ -302,10 +294,18 @@
|
||||
</fo:table>
|
||||
</fo:block>
|
||||
</fo:static-content>
|
||||
<fo:static-content flow-name="region-before-content" xsl:use-attribute-sets="HeaderFont">
|
||||
<fo:block xsl:use-attribute-sets="header"/>
|
||||
</fo:static-content>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template name="page_footer">
|
||||
<fo:static-content flow-name="region-after" xsl:use-attribute-sets="FooterFont">
|
||||
<fo:static-content flow-name="region-after-cover" xsl:use-attribute-sets="FooterFont">
|
||||
<fo:block xsl:use-attribute-sets="footer">
|
||||
<fo:inline xsl:use-attribute-sets="TinyFont orange-text">Please keep digital unless absolutely required. Read the (unique) terms and conditions of Radically Open Security at: https://radicallyopensecurity.com/TermsandConditions.pdf</fo:inline>
|
||||
</fo:block>
|
||||
</fo:static-content>
|
||||
<fo:static-content flow-name="region-after-content" xsl:use-attribute-sets="FooterFont">
|
||||
<fo:block xsl:use-attribute-sets="footer">
|
||||
<fo:inline xsl:use-attribute-sets="TinyFont orange-text">Please keep digital unless absolutely required. Read the (unique) terms and conditions of Radically Open Security at: https://radicallyopensecurity.com/TermsandConditions.pdf</fo:inline>
|
||||
</fo:block>
|
||||
|
||||
@@ -11,13 +11,15 @@
|
||||
<xsl:import href="att-set.xslt"/>
|
||||
<xsl:import href="block.xslt"/>
|
||||
<xsl:import href="findings.xslt"/>
|
||||
<xsl:import href="auto.xsl"/>
|
||||
<xsl:import href="auto.xslt"/>
|
||||
<xsl:import href="table.xslt"/>
|
||||
<xsl:import href="lists.xslt"/>
|
||||
<xsl:import href="inline.xslt"/>
|
||||
<xsl:import href="graphics.xslt"/>
|
||||
<xsl:import href="generic.xslt"/>
|
||||
<xsl:import href="numbering.xslt"/>
|
||||
<xsl:import href="placeholders.xslt"/><!--
|
||||
<xsl:import href="snippets.xslt"/>-->
|
||||
<xsl:import href="waiver.xslt"/>
|
||||
|
||||
<xsl:include href="localisation.xslt"/>
|
||||
@@ -31,11 +33,17 @@
|
||||
|
||||
|
||||
<xsl:key name="rosid" match="section|finding|appendix|non-finding" use="@id"/>
|
||||
<xsl:key name="biblioid" match="biblioentry" use="@id"/>
|
||||
|
||||
<!-- not used but needed because of shared code with contract; todo: clean these up -->
|
||||
<xsl:variable name="fee" select="/contract/meta/contractor/hourly_fee * 1"/>
|
||||
<xsl:variable name="plannedHours" select="/contract/meta/work/planning/hours * 1"/>
|
||||
<xsl:variable name="total_fee" select="$fee * $plannedHours"/>
|
||||
<!-- end -->
|
||||
|
||||
<xsl:variable name="CLASSES" select="document('../xslt/styles_off.xslt')/*/xsl:attribute-set"/>
|
||||
|
||||
<xsl:variable name="lang" select="/offerte/@xml:lang"/>
|
||||
<xsl:variable name="lang" select="/*/@xml:lang"/>
|
||||
<xsl:variable name="localDateFormat" select="$strdoc/date/format[lang($lang)]"/>
|
||||
|
||||
<xsl:variable name="latestVersionDate">
|
||||
@@ -113,11 +121,6 @@
|
||||
</fo:block>
|
||||
</xsl:template>
|
||||
|
||||
<!-- TITLES (ALL CAPS) -->
|
||||
<xsl:template match="title/text()">
|
||||
<xsl:value-of select="upper-case(.)"/>
|
||||
</xsl:template>
|
||||
|
||||
<!-- CONTACT BOX (comes at the end, is just the address, no title/table) -->
|
||||
<xsl:template match="contact">
|
||||
<fo:block xsl:use-attribute-sets="Contact">
|
||||
|
||||
@@ -11,13 +11,16 @@
|
||||
<xsl:import href="att-set.xslt"/>
|
||||
<xsl:import href="block.xslt"/>
|
||||
<xsl:import href="findings.xslt"/>
|
||||
<xsl:import href="auto.xsl"/>
|
||||
<xsl:import href="auto.xslt"/>
|
||||
<xsl:import href="table.xslt"/>
|
||||
<xsl:import href="lists.xslt"/>
|
||||
<xsl:import href="inline.xslt"/>
|
||||
<xsl:import href="graphics.xslt"/>
|
||||
<xsl:import href="generic.xslt"/>
|
||||
<xsl:import href="numbering.xslt"/>
|
||||
<xsl:import href="localisation.xslt"/>
|
||||
<xsl:import href="placeholders.xslt"/><!--
|
||||
<xsl:import href="snippets.xslt"/>-->
|
||||
|
||||
<xsl:include href="styles_rep.xslt"/>
|
||||
|
||||
@@ -27,7 +30,15 @@
|
||||
<!-- ****** AUTO_NUMBERING_FORMAT: value of the <xsl:number> element used for auto numbering -->
|
||||
<xsl:param name="AUTO_NUMBERING_FORMAT" select="'1.1.1'"/>
|
||||
|
||||
<xsl:key name="rosid" match="section|finding|appendix|non-finding" use="@id"/>
|
||||
<xsl:key name="rosid" match="section|finding|appendix|non-finding" use="@id"/><xsl:key name="biblioid" match="biblioentry" use="@id"/>
|
||||
|
||||
<!-- not used but needed because of shared code with contract; todo: clean these up -->
|
||||
<xsl:variable name="fee" select="/contract/meta/contractor/hourly_fee * 1"/>
|
||||
<xsl:variable name="plannedHours" select="/contract/meta/work/planning/hours * 1"/>
|
||||
<xsl:variable name="total_fee" select="$fee * $plannedHours"/>
|
||||
<!-- end -->
|
||||
|
||||
<xsl:variable name="lang" select="/*/@xml:lang"/>
|
||||
|
||||
<xsl:variable name="CLASSES" select="document('../xslt/styles_rep.xslt')/*/xsl:attribute-set"/>
|
||||
|
||||
|
||||
118
xml/xslt/info2contract.xsl
Normal file
118
xml/xslt/info2contract.xsl
Normal file
@@ -0,0 +1,118 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
|
||||
xmlns:xs="http://www.w3.org/2001/XMLSchema" exclude-result-prefixes="xs" version="2.0">
|
||||
|
||||
<xsl:import href="localisation.xslt"/>
|
||||
<xsl:import href="snippets.xslt"/>
|
||||
|
||||
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
|
||||
|
||||
<xsl:variable name="lang" select="/contract_info/@xml:lang"/>
|
||||
<xsl:param name="snippetBase" select="'contract'"/>
|
||||
<xsl:variable name="snippetSelectionRoot"
|
||||
select="document('../source/snippets/snippetselection.xml')/snippet_selection/document[@type = $docType]"/>
|
||||
|
||||
<xsl:variable name="docType" select="'contract'"/>
|
||||
<xsl:variable name="docSubType" select="/contract_info/scope/contract_type"/>
|
||||
|
||||
<xsl:param name="latestVersionDate"
|
||||
select="format-date(/contract_info/work/start_date, '[MNn] [D1], [Y]', 'en', (), ())"/>
|
||||
<!-- we're not using versions for contracts, but the contract date will do just fine -->
|
||||
|
||||
|
||||
<!-- ROOT -->
|
||||
<xsl:template match="/">
|
||||
|
||||
<contract xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:noNamespaceSchemaLocation="../dtd/contract.xsd"
|
||||
xmlns:xi="http://www.w3.org/2001/XInclude" xmlns:xlink="http://www.w3.org/1999/xlink">
|
||||
<xsl:attribute name="xml:lang" select="$lang"/>
|
||||
<meta>
|
||||
<xsl:element name="xi:include">
|
||||
<xsl:attribute name="href">snippets/company_info.xml</xsl:attribute>
|
||||
</xsl:element>
|
||||
<xsl:copy-of select="contract_info/company/following-sibling::node()"/>
|
||||
</meta>
|
||||
|
||||
|
||||
<section>
|
||||
<title>
|
||||
<xsl:call-template name="getString">
|
||||
<xsl:with-param name="stringID" select="'contract_title'"/>
|
||||
</xsl:call-template>
|
||||
</title>
|
||||
<xsl:for-each
|
||||
select="$snippetSelectionRoot/selection[@subtype = $docSubType]/snippet_group[@set = 'parties']/snippet">
|
||||
<xsl:element name="xi:include">
|
||||
<xsl:attribute name="href">
|
||||
<xsl:call-template name="docCheck">
|
||||
<xsl:with-param name="fileNameBase" select="."/>
|
||||
<xsl:with-param name="snippetDirectory" select="$snippetBase"/>
|
||||
</xsl:call-template>
|
||||
</xsl:attribute>
|
||||
</xsl:element>
|
||||
</xsl:for-each>
|
||||
<p><xsl:call-template name="getString">
|
||||
<xsl:with-param name="stringID" select="'contract_whereas'"/>
|
||||
<xsl:with-param name="caps" select="true()"/>
|
||||
</xsl:call-template>:</p>
|
||||
<ol type="A">
|
||||
<xsl:for-each
|
||||
select="$snippetSelectionRoot/selection[@subtype = $docSubType]/snippet_group[@set = 'whereas']/snippet">
|
||||
<xsl:element name="xi:include">
|
||||
<xsl:attribute name="href">
|
||||
<xsl:call-template name="docCheck">
|
||||
<xsl:with-param name="fileNameBase" select="."/>
|
||||
<xsl:with-param name="snippetDirectory" select="$snippetBase"/>
|
||||
</xsl:call-template>
|
||||
</xsl:attribute>
|
||||
</xsl:element>
|
||||
</xsl:for-each>
|
||||
</ol>
|
||||
<xsl:comment>Agreement section</xsl:comment>
|
||||
<section>
|
||||
<title>
|
||||
<xsl:call-template name="getString">
|
||||
<xsl:with-param name="stringID" select="'contract_agree'"/>
|
||||
</xsl:call-template>
|
||||
</title>
|
||||
<ol type="1">
|
||||
<xsl:for-each
|
||||
select="$snippetSelectionRoot/selection[@subtype = $docSubType]/snippet_group[@set = 'agree']/snippet">
|
||||
<xsl:element name="xi:include">
|
||||
<xsl:attribute name="href">
|
||||
<xsl:call-template name="docCheck">
|
||||
<xsl:with-param name="fileNameBase" select="."/>
|
||||
<xsl:with-param name="snippetDirectory" select="$snippetBase"/>
|
||||
</xsl:call-template>
|
||||
</xsl:attribute>
|
||||
</xsl:element>
|
||||
</xsl:for-each>
|
||||
</ol>
|
||||
</section>
|
||||
<section>
|
||||
<title>
|
||||
<xsl:call-template name="getString">
|
||||
<xsl:with-param name="stringID" select="'signed_dupe'"/>
|
||||
</xsl:call-template>
|
||||
<xsl:text> </xsl:text>
|
||||
<xsl:call-template name="getString">
|
||||
<xsl:with-param name="stringID" select="'waiver_signed_on'"/>
|
||||
</xsl:call-template>
|
||||
<xsl:text> </xsl:text>
|
||||
<xsl:value-of select="$latestVersionDate"/>
|
||||
<xsl:text> </xsl:text>
|
||||
<xsl:call-template name="getString">
|
||||
<xsl:with-param name="stringID" select="'waiver_signed_in'"/>
|
||||
</xsl:call-template>
|
||||
</title>
|
||||
<generate_contract_signature_box/>
|
||||
</section>
|
||||
</section>
|
||||
</contract>
|
||||
|
||||
|
||||
</xsl:template>
|
||||
|
||||
|
||||
</xsl:stylesheet>
|
||||
@@ -1,66 +1,69 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
|
||||
xmlns:xs="http://www.w3.org/2001/XMLSchema"
|
||||
exclude-result-prefixes="xs" xmlns:fo="http://www.w3.org/1999/XSL/Format"
|
||||
version="2.0">
|
||||
|
||||
xmlns:xs="http://www.w3.org/2001/XMLSchema" exclude-result-prefixes="xs"
|
||||
xmlns:fo="http://www.w3.org/1999/XSL/Format" version="2.0">
|
||||
|
||||
<xsl:template match="a">
|
||||
<xsl:variable name="destination">
|
||||
<xsl:choose>
|
||||
<xsl:when test="starts-with(@href, '#')">
|
||||
<xsl:value-of select="substring(@href, 2)"/>
|
||||
<xsl:value-of select="substring(@href, 2)"/>
|
||||
</xsl:when>
|
||||
<xsl:otherwise>
|
||||
<xsl:value-of select="@href"/>
|
||||
<xsl:value-of select="@href"/>
|
||||
</xsl:otherwise>
|
||||
</xsl:choose>
|
||||
</xsl:variable>
|
||||
<xsl:choose>
|
||||
<xsl:when test="starts-with(@href, '#') and not(//*[@id=$destination])">
|
||||
<fo:inline xsl:use-attribute-sets="errortext">WARNING: LINK TARGET NOT FOUND IN DOCUMENT</fo:inline>
|
||||
<xsl:when test="starts-with(@href, '#') and not(//*[@id = $destination])">
|
||||
<fo:inline xsl:use-attribute-sets="errortext">WARNING: LINK TARGET NOT FOUND IN
|
||||
DOCUMENT</fo:inline>
|
||||
</xsl:when>
|
||||
<xsl:when test="starts-with(@href, '#') and //*[@id=$destination][ancestor-or-self::*[@visibility='hidden']]">
|
||||
<fo:inline xsl:use-attribute-sets="errortext">WARNING: LINK TARGET IS HIDDEN</fo:inline>
|
||||
<xsl:when
|
||||
test="starts-with(@href, '#') and //*[@id = $destination][ancestor-or-self::*[@visibility = 'hidden']]">
|
||||
<fo:inline xsl:use-attribute-sets="errortext">WARNING: LINK TARGET IS
|
||||
HIDDEN</fo:inline>
|
||||
</xsl:when>
|
||||
<xsl:otherwise>
|
||||
<fo:basic-link color="blue">
|
||||
<xsl:choose>
|
||||
<xsl:when test="starts-with(@href, '#')">
|
||||
<xsl:attribute name="internal-destination">
|
||||
<xsl:value-of select="$destination"/>
|
||||
</xsl:attribute>
|
||||
</xsl:when>
|
||||
<xsl:otherwise>
|
||||
<xsl:attribute name="external-destination">
|
||||
<xsl:value-of select="$destination"/>
|
||||
</xsl:attribute>
|
||||
</xsl:otherwise>
|
||||
</xsl:choose>
|
||||
<xsl:choose>
|
||||
<xsl:when test="starts-with(@href, '#') and not(text())">
|
||||
<xsl:for-each select="key('rosid',$destination)">
|
||||
<xsl:if test="not(local-name() = 'appendix' or local-name() = 'finding')">
|
||||
<!-- appendix already has 'appendix' as part of its numbering, findings should not be prefixed with the word 'finding' -->
|
||||
<xsl:value-of select="local-name()"/>
|
||||
<xsl:text> </xsl:text>
|
||||
</xsl:if>
|
||||
<xsl:apply-templates select="." mode="number"/>
|
||||
</xsl:for-each>
|
||||
</xsl:when>
|
||||
<xsl:otherwise>
|
||||
<xsl:apply-templates select="*|text()"/>
|
||||
</xsl:otherwise>
|
||||
</xsl:choose>
|
||||
</fo:basic-link>
|
||||
<xsl:if test="starts-with(@href, '#')">
|
||||
<xsl:text> (page </xsl:text>
|
||||
<fo:page-number-citation ref-id="{substring(@href, 2)}"/>
|
||||
<xsl:text>)</xsl:text>
|
||||
</xsl:if>
|
||||
<xsl:choose>
|
||||
<xsl:when test="starts-with(@href, '#')">
|
||||
<xsl:attribute name="internal-destination">
|
||||
<xsl:value-of select="$destination"/>
|
||||
</xsl:attribute>
|
||||
</xsl:when>
|
||||
<xsl:otherwise>
|
||||
<xsl:attribute name="external-destination">
|
||||
<xsl:value-of select="$destination"/>
|
||||
</xsl:attribute>
|
||||
</xsl:otherwise>
|
||||
</xsl:choose>
|
||||
<xsl:choose>
|
||||
<xsl:when test="starts-with(@href, '#') and not(text())">
|
||||
<xsl:for-each select="key('rosid', $destination)">
|
||||
<xsl:if
|
||||
test="not(local-name() = 'appendix' or local-name() = 'finding')">
|
||||
<!-- appendix already has 'appendix' as part of its numbering, findings should not be prefixed with the word 'finding' -->
|
||||
<xsl:value-of select="local-name()"/>
|
||||
<xsl:text> </xsl:text>
|
||||
</xsl:if>
|
||||
<xsl:apply-templates select="." mode="number"/>
|
||||
</xsl:for-each>
|
||||
</xsl:when>
|
||||
<xsl:otherwise>
|
||||
<xsl:apply-templates select="* | text()"/>
|
||||
</xsl:otherwise>
|
||||
</xsl:choose>
|
||||
</fo:basic-link>
|
||||
<xsl:if test="starts-with(@href, '#')">
|
||||
<xsl:text> (page </xsl:text>
|
||||
<fo:page-number-citation ref-id="{substring(@href, 2)}"/>
|
||||
<xsl:text>)</xsl:text>
|
||||
</xsl:if>
|
||||
</xsl:otherwise>
|
||||
</xsl:choose>
|
||||
</xsl:template>
|
||||
|
||||
|
||||
<xsl:template match="a" mode="summarytable">
|
||||
<xsl:variable name="destination">
|
||||
<xsl:choose>
|
||||
@@ -87,7 +90,7 @@
|
||||
</xsl:choose>
|
||||
<xsl:choose>
|
||||
<xsl:when test="starts-with(@href, '#') and not(text())">
|
||||
<xsl:for-each select="key('rosid',$destination)">
|
||||
<xsl:for-each select="key('rosid', $destination)">
|
||||
<xsl:if test="not(local-name() = 'appendix' or local-name() = 'finding')">
|
||||
<!-- appendix already has 'appendix' as part of its numbering, findings should not be prefixed with the word 'finding' -->
|
||||
<xsl:value-of select="local-name()"/>
|
||||
@@ -97,41 +100,236 @@
|
||||
</xsl:for-each>
|
||||
</xsl:when>
|
||||
<xsl:otherwise>
|
||||
<xsl:apply-templates select="*|text()"/>
|
||||
<xsl:apply-templates select="* | text()"/>
|
||||
</xsl:otherwise>
|
||||
</xsl:choose>
|
||||
</fo:basic-link>
|
||||
</xsl:template>
|
||||
|
||||
|
||||
<xsl:template match="b">
|
||||
<fo:inline xsl:use-attribute-sets="bold"><xsl:apply-templates/></fo:inline>
|
||||
<fo:inline xsl:use-attribute-sets="bold">
|
||||
<xsl:apply-templates/>
|
||||
</fo:inline>
|
||||
</xsl:template>
|
||||
|
||||
|
||||
<xsl:template match="i">
|
||||
<fo:inline xsl:use-attribute-sets="italic"><xsl:apply-templates/></fo:inline>
|
||||
<fo:inline xsl:use-attribute-sets="italic">
|
||||
<xsl:apply-templates/>
|
||||
</fo:inline>
|
||||
</xsl:template>
|
||||
|
||||
|
||||
<xsl:template match="u">
|
||||
<fo:inline xsl:use-attribute-sets="underline"><xsl:apply-templates/></fo:inline>
|
||||
<fo:inline xsl:use-attribute-sets="underline">
|
||||
<xsl:apply-templates/>
|
||||
</fo:inline>
|
||||
</xsl:template>
|
||||
|
||||
|
||||
<xsl:template match="monospace">
|
||||
<xsl:choose>
|
||||
<xsl:when test="parent::title">
|
||||
<fo:inline xsl:use-attribute-sets="monospace-title"><xsl:apply-templates/></fo:inline>
|
||||
<fo:inline xsl:use-attribute-sets="monospace-title">
|
||||
<xsl:apply-templates/>
|
||||
</fo:inline>
|
||||
</xsl:when>
|
||||
<xsl:otherwise>
|
||||
<fo:inline xsl:use-attribute-sets="monospace"><xsl:apply-templates/></fo:inline>
|
||||
<fo:inline xsl:use-attribute-sets="monospace">
|
||||
<xsl:apply-templates/>
|
||||
</fo:inline>
|
||||
</xsl:otherwise>
|
||||
</xsl:choose>
|
||||
</xsl:template>
|
||||
|
||||
|
||||
<xsl:template match="sup">
|
||||
<fo:inline xsl:use-attribute-sets="sup"><xsl:apply-templates/></fo:inline>
|
||||
<fo:inline xsl:use-attribute-sets="sup">
|
||||
<xsl:apply-templates/>
|
||||
</fo:inline>
|
||||
</xsl:template>
|
||||
|
||||
|
||||
<xsl:template match="sub">
|
||||
<fo:inline xsl:use-attribute-sets="sub"><xsl:apply-templates/></fo:inline>
|
||||
<fo:inline xsl:use-attribute-sets="sub">
|
||||
<xsl:apply-templates/>
|
||||
</fo:inline>
|
||||
</xsl:template>
|
||||
|
||||
</xsl:stylesheet>
|
||||
|
||||
<xsl:template match="fnref">
|
||||
<xsl:variable name="fnCount" select="count(preceding::fnref) + 1"/>
|
||||
<fo:footnote>
|
||||
<fo:inline xsl:use-attribute-sets="sup">
|
||||
<xsl:value-of select="$fnCount"/>
|
||||
<xsl:text> </xsl:text>
|
||||
</fo:inline>
|
||||
<fo:footnote-body xsl:use-attribute-sets="TinyFont">
|
||||
<fo:block>
|
||||
<fo:inline xsl:use-attribute-sets="sup">
|
||||
<xsl:value-of select="$fnCount"/>
|
||||
</fo:inline>
|
||||
<xsl:apply-templates/>
|
||||
</fo:block>
|
||||
</fo:footnote-body>
|
||||
</fo:footnote>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template match="bibref">
|
||||
<xsl:variable name="bibid" select="./@ref"/>
|
||||
<xsl:variable name="bibCount" select="count(preceding::biblioentry[@id = $bibid]) + 1"/>
|
||||
<xsl:choose>
|
||||
<xsl:when test="starts-with(@href, '#') and not(//*[@id = $bibid])">
|
||||
<fo:inline xsl:use-attribute-sets="errortext">WARNING: BIBLIOGRAPHY ENTRY NOT FOUND
|
||||
IN DOCUMENT</fo:inline>
|
||||
</xsl:when>
|
||||
<xsl:when
|
||||
test="starts-with(@href, '#') and //*[@id = $bibid][ancestor-or-self::*[@visibility = 'hidden']]">
|
||||
<fo:inline xsl:use-attribute-sets="errortext">WARNING: BIBLIOGRAPHY ENTRY IS
|
||||
HIDDEN</fo:inline>
|
||||
</xsl:when>
|
||||
<xsl:otherwise>
|
||||
<fo:basic-link>
|
||||
<xsl:attribute name="internal-destination">
|
||||
<xsl:value-of select="$bibid"/>
|
||||
</xsl:attribute>
|
||||
<xsl:text>[</xsl:text>
|
||||
<xsl:for-each select="key('biblioid', $bibid)">
|
||||
<xsl:apply-templates select="." mode="number"/>
|
||||
</xsl:for-each>
|
||||
<xsl:text>]</xsl:text>
|
||||
</fo:basic-link>
|
||||
</xsl:otherwise>
|
||||
</xsl:choose>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template match="author">
|
||||
<xsl:value-of select="firstname"/>
|
||||
<xsl:text> </xsl:text>
|
||||
<xsl:value-of select="surname"/>
|
||||
<xsl:if test="org">
|
||||
<xsl:if test="firstname | surname">
|
||||
<xsl:text> (</xsl:text>
|
||||
</xsl:if>
|
||||
<xsl:value-of select="org"/>
|
||||
<xsl:if test="firstname | surname">
|
||||
<xsl:text>)</xsl:text>
|
||||
</xsl:if>
|
||||
</xsl:if>
|
||||
<xsl:choose>
|
||||
<xsl:when test="following-sibling::author">, </xsl:when>
|
||||
<xsl:otherwise>
|
||||
<xsl:text>. </xsl:text>
|
||||
</xsl:otherwise>
|
||||
</xsl:choose>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template match="biblioentry/title">
|
||||
<xsl:choose>
|
||||
<xsl:when test="../@role = 'book'">
|
||||
<fo:inline xsl:use-attribute-sets="title.book">
|
||||
<xsl:apply-templates/>
|
||||
</fo:inline>
|
||||
</xsl:when>
|
||||
<xsl:when test="../@role = 'article'">
|
||||
<fo:inline xsl:use-attribute-sets="title.article">
|
||||
<xsl:apply-templates/>
|
||||
</fo:inline>
|
||||
</xsl:when>
|
||||
</xsl:choose>
|
||||
<xsl:choose>
|
||||
<xsl:when test="following-sibling::info">
|
||||
<!-- we're getting something more, place a comma -->
|
||||
<xsl:text>, </xsl:text>
|
||||
</xsl:when>
|
||||
<xsl:otherwise>
|
||||
<xsl:text>. </xsl:text>
|
||||
</xsl:otherwise>
|
||||
</xsl:choose>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template match="journal">
|
||||
<fo:inline xsl:use-attribute-sets="journal">
|
||||
<xsl:apply-templates/>
|
||||
</fo:inline>
|
||||
<xsl:choose>
|
||||
<xsl:when test="following-sibling::info or following-sibling::pubdate">
|
||||
<!-- we're getting something more, place a comma -->
|
||||
<xsl:text>, </xsl:text>
|
||||
</xsl:when>
|
||||
<xsl:otherwise>
|
||||
<xsl:text>. </xsl:text>
|
||||
</xsl:otherwise>
|
||||
</xsl:choose>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template match="website">
|
||||
<fo:inline xsl:use-attribute-sets="website">
|
||||
<xsl:apply-templates/>
|
||||
</fo:inline>
|
||||
<xsl:choose>
|
||||
<xsl:when test="following-sibling::info or following-sibling::pubdate">
|
||||
<!-- we're getting something more, place a comma -->
|
||||
<xsl:text>, </xsl:text>
|
||||
</xsl:when>
|
||||
<xsl:otherwise>
|
||||
<xsl:text>. </xsl:text>
|
||||
</xsl:otherwise>
|
||||
</xsl:choose>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template match="info">
|
||||
<fo:inline xsl:use-attribute-sets="info">
|
||||
<xsl:apply-templates/>
|
||||
</fo:inline>
|
||||
<xsl:choose>
|
||||
<xsl:when test="../@role = 'article' and following-sibling::pubdate">
|
||||
<!-- we're getting something more, place a comma -->
|
||||
<xsl:text>, </xsl:text>
|
||||
</xsl:when>
|
||||
<xsl:otherwise>
|
||||
<xsl:text>. </xsl:text>
|
||||
</xsl:otherwise>
|
||||
</xsl:choose>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template match="publisher">
|
||||
<fo:inline xsl:use-attribute-sets="publisher">
|
||||
<xsl:apply-templates/>
|
||||
</fo:inline>
|
||||
<xsl:choose>
|
||||
<xsl:when test="following-sibling::pubdate">
|
||||
<!-- we're getting something more, place a comma -->
|
||||
<xsl:text>, </xsl:text>
|
||||
</xsl:when>
|
||||
<xsl:otherwise>
|
||||
<xsl:text>. </xsl:text>
|
||||
</xsl:otherwise>
|
||||
</xsl:choose>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template match="publisher/name">
|
||||
<xsl:apply-templates/>
|
||||
<xsl:if test="following-sibling::location">
|
||||
<!-- we're getting something more, place a comma -->
|
||||
<xsl:text>, </xsl:text>
|
||||
</xsl:if>
|
||||
</xsl:template>
|
||||
<xsl:template match="publisher/location">
|
||||
<xsl:apply-templates/>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template match="pubdate">
|
||||
<fo:inline xsl:use-attribute-sets="pubdate">
|
||||
<xsl:apply-templates/>
|
||||
</fo:inline>
|
||||
<xsl:text>. </xsl:text>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template match="link">
|
||||
<xsl:apply-templates select="a"/>
|
||||
<xsl:text>. </xsl:text>
|
||||
<xsl:if test="accessed"><xsl:apply-templates select="accessed"/></xsl:if>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template match="accessed">
|
||||
<xsl:text>Accessed: </xsl:text>
|
||||
<xsl:apply-templates/>
|
||||
<xsl:text>.</xsl:text>
|
||||
</xsl:template>
|
||||
|
||||
</xsl:stylesheet>
|
||||
|
||||
@@ -130,4 +130,29 @@
|
||||
</fo:list-item>
|
||||
</xsl:template>
|
||||
|
||||
|
||||
|
||||
<xsl:template match="biblioentries"><!-- div doesn't do anything, it's just there to make snippets more flexible -->
|
||||
<fo:list-block provisional-distance-between-starts="0.75cm"
|
||||
provisional-label-separation="2.5mm" space-after="12pt">
|
||||
<xsl:call-template name="checkIfLast"/>
|
||||
<xsl:apply-templates select="biblioentry"/>
|
||||
</fo:list-block>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template match="biblioentry">
|
||||
<fo:list-item xsl:use-attribute-sets="li">
|
||||
<xsl:attribute name="id">
|
||||
<xsl:value-of select="@id"/>
|
||||
</xsl:attribute>
|
||||
<fo:list-item-label end-indent="label-end()">
|
||||
<fo:block><xsl:number value="position()" format="[1] "/></fo:block>
|
||||
</fo:list-item-label>
|
||||
<fo:list-item-body start-indent="body-start()">
|
||||
<fo:block xsl:use-attribute-sets="biblioentry">
|
||||
<xsl:apply-templates select="*"/>
|
||||
</fo:block>
|
||||
</fo:list-item-body>
|
||||
</fo:list-item>
|
||||
</xsl:template>
|
||||
</xsl:stylesheet>
|
||||
@@ -12,7 +12,16 @@
|
||||
|
||||
<xsl:template name="getString">
|
||||
<xsl:param name="stringID" select="'none'"/>
|
||||
<xsl:copy-of select="$strdoc/string[@id=$stringID]/translation[lang($lang)]/node()"/>
|
||||
<xsl:param name="caps" select="false()"/>
|
||||
<xsl:choose>
|
||||
<xsl:when test="$caps">
|
||||
<xsl:value-of select="$strdoc/string[@id=$stringID]/translation[lang($lang)]/upper-case(text())"/>
|
||||
</xsl:when>
|
||||
<xsl:otherwise>
|
||||
<xsl:value-of select="$strdoc/string[@id=$stringID]/translation[lang($lang)]/text()"/>
|
||||
</xsl:otherwise>
|
||||
</xsl:choose>
|
||||
|
||||
</xsl:template>
|
||||
|
||||
</xsl:stylesheet>
|
||||
|
||||
@@ -44,4 +44,11 @@
|
||||
</xsl:choose>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template match="biblioentry" mode="number">
|
||||
<fo:inline>
|
||||
<xsl:number count="biblioentry"
|
||||
format="{$AUTO_NUMBERING_FORMAT}"/>
|
||||
</fo:inline>
|
||||
</xsl:template>
|
||||
|
||||
</xsl:stylesheet>
|
||||
@@ -5,7 +5,7 @@
|
||||
|
||||
<xsl:param name="INVOICE_NO">00/000</xsl:param>
|
||||
<xsl:param name="DATE">
|
||||
<xsl:value-of select="format-date(current-date(), '[Y]-[M,2]-[D1]', 'en', (), ())"/>
|
||||
<xsl:value-of select="format-date(current-date(), '[Y]-[M,2]-[D,2]', 'en', (), ())"/>
|
||||
</xsl:param>
|
||||
|
||||
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
|
||||
<pentest_report xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:noNamespaceSchemaLocation="../dtd/pentestreport.xsd"
|
||||
xmlns:xi="http://www.w3.org/2001/XInclude" findingCode="???">
|
||||
xmlns:xi="http://www.w3.org/2001/XInclude" xml:lang="en" findingCode="???">
|
||||
<meta>
|
||||
<title>Penetration Test Report</title>
|
||||
<xsl:element name="xi:include">
|
||||
@@ -44,7 +44,7 @@
|
||||
<version_history>
|
||||
<xsl:comment>needed for date on frontpage and in signature boxes; it is possible to add a new <version> after each review; in that case, make sure to update the date/time</xsl:comment>
|
||||
<version number="auto">
|
||||
<xsl:attribute name="date"><xsl:value-of select="format-date(current-date(), '[Y]-[M,2]-[D1]', 'en', (), ())"/>T10:00:00</xsl:attribute>
|
||||
<xsl:attribute name="date"><xsl:value-of select="format-date(current-date(), '[Y]-[M,2]-[D,2]', 'en', (), ())"/>T10:00:00</xsl:attribute>
|
||||
<xsl:comment>actual date-time here; you can leave the number attribute alone</xsl:comment>
|
||||
<v_author>ROS Writer</v_author>
|
||||
<xsl:comment>name of the author here; for internal use only</xsl:comment>
|
||||
|
||||
@@ -9,15 +9,15 @@
|
||||
<fo:layout-master-set>
|
||||
<!-- first page -->
|
||||
<fo:simple-page-master master-name="Cover" xsl:use-attribute-sets="PortraitPage">
|
||||
<fo:region-body region-name="region-body" xsl:use-attribute-sets="region-body"/>
|
||||
<fo:region-before region-name="region-before" xsl:use-attribute-sets="region-before"/>
|
||||
<fo:region-after region-name="region-after" xsl:use-attribute-sets="region-after"/>
|
||||
<fo:region-body region-name="region-body" xsl:use-attribute-sets="region-body-cover"/>
|
||||
<fo:region-before region-name="region-before-cover" xsl:use-attribute-sets="region-before-cover"/>
|
||||
<fo:region-after region-name="region-after-cover" xsl:use-attribute-sets="region-after-cover"/>
|
||||
</fo:simple-page-master>
|
||||
<!-- all other pages -->
|
||||
<fo:simple-page-master master-name="Content" xsl:use-attribute-sets="PortraitPage">
|
||||
<fo:region-body region-name="region-body" xsl:use-attribute-sets="region-body"/>
|
||||
<fo:region-before region-name="region-before" xsl:use-attribute-sets="region-before"/>
|
||||
<fo:region-after region-name="region-after" xsl:use-attribute-sets="region-after"/>
|
||||
<fo:region-body region-name="region-body" xsl:use-attribute-sets="region-body-content"/>
|
||||
<fo:region-before region-name="region-before-content" xsl:use-attribute-sets="region-before-content"/>
|
||||
<fo:region-after region-name="region-after-content" xsl:use-attribute-sets="region-after-content"/>
|
||||
</fo:simple-page-master>
|
||||
<!-- sequence master -->
|
||||
<fo:page-sequence-master master-name="Report">
|
||||
@@ -31,15 +31,15 @@
|
||||
</fo:layout-master-set>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template name="layout-master-set-invoice">
|
||||
<!-- Main Page layout structure -->
|
||||
<!--<xsl:template name="layout-master-set-invoice">
|
||||
<!-\- Main Page layout structure -\->
|
||||
<fo:layout-master-set>
|
||||
<fo:simple-page-master master-name="Content" xsl:use-attribute-sets="PortraitPage">
|
||||
<fo:region-body region-name="region-body" xsl:use-attribute-sets="region-body"/>
|
||||
<fo:region-before region-name="region-before" xsl:use-attribute-sets="region-before"/>
|
||||
<fo:region-after region-name="region-after" xsl:use-attribute-sets="region-after"/>
|
||||
<fo:region-body region-name="region-body" xsl:use-attribute-sets="region-body-content"/>
|
||||
<fo:region-before region-name="region-before-content" xsl:use-attribute-sets="region-before-content"/>
|
||||
<fo:region-after region-name="region-after-content" xsl:use-attribute-sets="region-after-content"/>
|
||||
</fo:simple-page-master>
|
||||
<!-- sequence master -->
|
||||
<!-\- sequence master -\->
|
||||
<fo:page-sequence-master master-name="Invoice">
|
||||
<fo:repeatable-page-master-alternatives>
|
||||
<fo:conditional-page-master-reference master-reference="Content"
|
||||
@@ -47,10 +47,15 @@
|
||||
</fo:repeatable-page-master-alternatives>
|
||||
</fo:page-sequence-master>
|
||||
</fo:layout-master-set>
|
||||
</xsl:template>
|
||||
</xsl:template>-->
|
||||
|
||||
<xsl:template name="page_header">
|
||||
<fo:static-content flow-name="region-before" xsl:use-attribute-sets="HeaderFont">
|
||||
<fo:static-content flow-name="region-before-cover" xsl:use-attribute-sets="HeaderFont">
|
||||
<fo:block xsl:use-attribute-sets="header">
|
||||
<xsl:value-of select="/pentest_report/meta/classification"/>
|
||||
</fo:block>
|
||||
</fo:static-content>
|
||||
<fo:static-content flow-name="region-before-content" xsl:use-attribute-sets="HeaderFont">
|
||||
<fo:block xsl:use-attribute-sets="header">
|
||||
<xsl:value-of select="/pentest_report/meta/classification"/>
|
||||
</fo:block>
|
||||
@@ -58,7 +63,16 @@
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template name="page_footer">
|
||||
<fo:static-content flow-name="region-after" xsl:use-attribute-sets="FooterFont">
|
||||
<fo:static-content flow-name="region-after-cover" xsl:use-attribute-sets="FooterFont">
|
||||
<fo:block xsl:use-attribute-sets="footer">
|
||||
<fo:page-number/>/<fo:page-number-citation ref-id="EndOfDoc"/>
|
||||
<fo:leader leader-pattern="space"/>
|
||||
<fo:inline xsl:use-attribute-sets="TinyFont"><xsl:value-of
|
||||
select="*/meta/company/full_name"/> - Chamber of Commerce
|
||||
<xsl:value-of select="*/meta/company/coc"/></fo:inline>
|
||||
</fo:block>
|
||||
</fo:static-content>
|
||||
<fo:static-content flow-name="region-after-content" xsl:use-attribute-sets="FooterFont">
|
||||
<fo:block xsl:use-attribute-sets="footer">
|
||||
<fo:page-number/>/<fo:page-number-citation ref-id="EndOfDoc"/>
|
||||
<fo:leader leader-pattern="space"/>
|
||||
@@ -75,7 +89,7 @@
|
||||
<xsl:call-template name="page_footer"/>
|
||||
<fo:flow flow-name="region-body" xsl:use-attribute-sets="DefaultFont">
|
||||
<fo:block>
|
||||
<xsl:apply-templates select="pentest_report|offerte|quickscope|generic_document"/>
|
||||
<xsl:apply-templates select="pentest_report|offerte|quickscope|generic_document|contract"/>
|
||||
</fo:block>
|
||||
<fo:block id="EndOfDoc"/>
|
||||
</fo:flow>
|
||||
|
||||
502
xml/xslt/placeholders.xslt
Normal file
502
xml/xslt/placeholders.xslt
Normal file
@@ -0,0 +1,502 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
|
||||
xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:fo="http://www.w3.org/1999/XSL/Format" xmlns:my="http://radical.sexy"
|
||||
exclude-result-prefixes="xs"
|
||||
version="2.0">
|
||||
<!-- PLACEHOLDERS -->
|
||||
<xsl:template match="client_long">
|
||||
<xsl:param name="placeholderElement" select="/*/meta//client/full_name"/>
|
||||
<xsl:call-template name="checkPlaceholder">
|
||||
<xsl:with-param name="placeholderElement" select="$placeholderElement"/>
|
||||
</xsl:call-template>
|
||||
</xsl:template>
|
||||
<xsl:template match="client_short">
|
||||
<xsl:param name="placeholderElement" select="/*/meta//client/short_name"/>
|
||||
<xsl:call-template name="checkPlaceholder">
|
||||
<xsl:with-param name="placeholderElement" select="$placeholderElement"/>
|
||||
</xsl:call-template>
|
||||
</xsl:template>
|
||||
<xsl:template match="client_street">
|
||||
<xsl:param name="placeholderElement" select="/*/meta//client/address"/>
|
||||
<xsl:call-template name="checkPlaceholder">
|
||||
<xsl:with-param name="placeholderElement" select="$placeholderElement"/>
|
||||
</xsl:call-template>
|
||||
</xsl:template>
|
||||
<xsl:template match="client_city">
|
||||
<xsl:param name="placeholderElement" select="/*/meta//client/city"/>
|
||||
<xsl:call-template name="checkPlaceholder">
|
||||
<xsl:with-param name="placeholderElement" select="$placeholderElement"/>
|
||||
</xsl:call-template>
|
||||
</xsl:template>
|
||||
<xsl:template match="client_country">
|
||||
<xsl:param name="placeholderElement" select="/*/meta//client/country"/>
|
||||
<xsl:call-template name="checkPlaceholder">
|
||||
<xsl:with-param name="placeholderElement" select="$placeholderElement"/>
|
||||
</xsl:call-template>
|
||||
</xsl:template>
|
||||
<xsl:template match="client_legal_rep">
|
||||
<xsl:param name="placeholderElement"
|
||||
select="/offerte/meta/permission_parties/client/legal_rep"/>
|
||||
<xsl:call-template name="checkPlaceholder">
|
||||
<xsl:with-param name="placeholderElement" select="$placeholderElement"/>
|
||||
</xsl:call-template>
|
||||
</xsl:template>
|
||||
<xsl:template match="client_waiver_rep">
|
||||
<xsl:param name="placeholderElement" select="/*/meta/permission_parties/client/waiver_rep"/>
|
||||
<xsl:call-template name="checkPlaceholder">
|
||||
<xsl:with-param name="placeholderElement" select="$placeholderElement"/>
|
||||
</xsl:call-template>
|
||||
</xsl:template>
|
||||
<xsl:template match="client_poc1">
|
||||
<xsl:param name="placeholderElement" select="/*/meta/permission_parties/client/poc1"/>
|
||||
<xsl:call-template name="checkPlaceholder">
|
||||
<xsl:with-param name="placeholderElement" select="$placeholderElement"/>
|
||||
</xsl:call-template>
|
||||
</xsl:template>
|
||||
<xsl:template match="client_coc">
|
||||
<xsl:param name="placeholderElement" select="/*/meta/permission_parties/client/coc"/>
|
||||
<xsl:call-template name="checkPlaceholder">
|
||||
<xsl:with-param name="placeholderElement" select="$placeholderElement"/>
|
||||
</xsl:call-template>
|
||||
</xsl:template>
|
||||
<xsl:template match="company_long">
|
||||
<xsl:param name="placeholderElement" select="/*/meta/company/full_name"/>
|
||||
<xsl:call-template name="checkPlaceholder">
|
||||
<xsl:with-param name="placeholderElement" select="$placeholderElement"/>
|
||||
</xsl:call-template>
|
||||
</xsl:template>
|
||||
<xsl:template match="company_short">
|
||||
<xsl:param name="placeholderElement" select="/*/meta/company/short_name"/>
|
||||
<xsl:call-template name="checkPlaceholder">
|
||||
<xsl:with-param name="placeholderElement" select="$placeholderElement"/>
|
||||
</xsl:call-template>
|
||||
</xsl:template>
|
||||
<xsl:template match="company_address">
|
||||
<xsl:param name="placeholderElement" select="/*/meta/company/address"/>
|
||||
<xsl:call-template name="checkPlaceholder">
|
||||
<xsl:with-param name="placeholderElement" select="$placeholderElement"/>
|
||||
</xsl:call-template>
|
||||
</xsl:template>
|
||||
<xsl:template match="company_city">
|
||||
<xsl:param name="placeholderElement" select="/*/meta/company/city"/>
|
||||
<xsl:call-template name="checkPlaceholder">
|
||||
<xsl:with-param name="placeholderElement" select="$placeholderElement"/>
|
||||
</xsl:call-template>
|
||||
</xsl:template>
|
||||
<xsl:template match="company_postalcode">
|
||||
<xsl:param name="placeholderElement" select="/*/meta/company/postal_code"/>
|
||||
<xsl:call-template name="checkPlaceholder">
|
||||
<xsl:with-param name="placeholderElement" select="$placeholderElement"/>
|
||||
</xsl:call-template>
|
||||
</xsl:template>
|
||||
<xsl:template match="company_country">
|
||||
<xsl:param name="placeholderElement" select="/*/meta/company/country"/>
|
||||
<xsl:call-template name="checkPlaceholder">
|
||||
<xsl:with-param name="placeholderElement" select="$placeholderElement"/>
|
||||
</xsl:call-template>
|
||||
</xsl:template>
|
||||
<xsl:template match="company_svc_long">
|
||||
<xsl:param name="placeholderElement"
|
||||
select="/offerte/meta/offered_service_long | /pentest_report/meta/offered_service_long"/>
|
||||
<xsl:call-template name="checkPlaceholder">
|
||||
<xsl:with-param name="placeholderElement" select="$placeholderElement"/>
|
||||
</xsl:call-template>
|
||||
</xsl:template>
|
||||
<xsl:template match="company_svc_short">
|
||||
<xsl:param name="placeholderElement"
|
||||
select="/offerte/meta/offered_service_short | /pentest_report/meta/offered_service_short"/>
|
||||
<xsl:call-template name="checkPlaceholder">
|
||||
<xsl:with-param name="placeholderElement" select="$placeholderElement"/>
|
||||
</xsl:call-template>
|
||||
</xsl:template>
|
||||
<xsl:template match="company_legal_rep">
|
||||
<xsl:param name="placeholderElement" select="/*/meta/company/legal_rep"/>
|
||||
<xsl:call-template name="checkPlaceholder">
|
||||
<xsl:with-param name="placeholderElement" select="$placeholderElement"/>
|
||||
</xsl:call-template>
|
||||
</xsl:template>
|
||||
<xsl:template match="company_poc1">
|
||||
<xsl:param name="placeholderElement" select="/*/meta/company/poc1"/>
|
||||
<xsl:call-template name="checkPlaceholder">
|
||||
<xsl:with-param name="placeholderElement" select="$placeholderElement"/>
|
||||
</xsl:call-template>
|
||||
</xsl:template>
|
||||
<xsl:template match="company_email">
|
||||
<xsl:param name="placeholderElement" select="/*/meta/company/email"/>
|
||||
<xsl:call-template name="checkPlaceholder">
|
||||
<xsl:with-param name="placeholderElement" select="$placeholderElement"/>
|
||||
</xsl:call-template>
|
||||
</xsl:template>
|
||||
<xsl:template match="t_app">
|
||||
<xsl:param name="placeholderElement"
|
||||
select="/offerte/meta/pentestinfo/target_application | /pentest_report/meta/pentestinfo/target_application"/>
|
||||
<xsl:call-template name="checkPlaceholder">
|
||||
<xsl:with-param name="placeholderElement" select="$placeholderElement"/>
|
||||
</xsl:call-template>
|
||||
</xsl:template>
|
||||
<xsl:template match="t_app_producer">
|
||||
<xsl:param name="placeholderElement"
|
||||
select="/offerte/meta/pentestinfo/target_application_producer | /pentest_report/meta/pentestinfo/target_application_producer"/>
|
||||
<xsl:call-template name="checkPlaceholder">
|
||||
<xsl:with-param name="placeholderElement" select="$placeholderElement"/>
|
||||
</xsl:call-template>
|
||||
</xsl:template>
|
||||
<xsl:template match="p_duration">
|
||||
<xsl:param name="placeholderElement" select="/*/meta/pentestinfo/duration"/>
|
||||
<xsl:call-template name="checkPlaceholder">
|
||||
<xsl:with-param name="placeholderElement" select="$placeholderElement"/>
|
||||
</xsl:call-template>
|
||||
</xsl:template>
|
||||
<xsl:template match="p_boxtype">
|
||||
<xsl:param name="placeholderElement" select="/*/meta/pentestinfo/type"/>
|
||||
<xsl:call-template name="checkPlaceholder">
|
||||
<xsl:with-param name="placeholderElement" select="$placeholderElement"/>
|
||||
</xsl:call-template>
|
||||
</xsl:template>
|
||||
<xsl:template match="p_fee">
|
||||
<xsl:param name="placeholderElement" select="/*/meta/pentestinfo/fee"/>
|
||||
<xsl:value-of select="$denomination"/>
|
||||
<xsl:text> </xsl:text>
|
||||
<xsl:call-template name="checkPlaceholder">
|
||||
<xsl:with-param name="placeholderElement" select="$placeholderElement"/>
|
||||
</xsl:call-template>
|
||||
</xsl:template>
|
||||
<xsl:template match="p_testingduration">
|
||||
<xsl:param name="placeholderElement" select="/*/meta/pentestinfo/test_planning"/>
|
||||
<xsl:call-template name="checkPlaceholder">
|
||||
<xsl:with-param name="placeholderElement" select="$placeholderElement"/>
|
||||
</xsl:call-template>
|
||||
</xsl:template>
|
||||
<xsl:template match="p_reportdue">
|
||||
<xsl:param name="placeholderElement" select="/*/meta/pentestinfo/report_due"/>
|
||||
<xsl:call-template name="checkPlaceholder">
|
||||
<xsl:with-param name="placeholderElement" select="$placeholderElement"/>
|
||||
</xsl:call-template>
|
||||
</xsl:template>
|
||||
<xsl:template match="engagement_description">
|
||||
<xsl:param name="placeholderElement" select="/contract/meta/scope/engagement_description"/>
|
||||
<xsl:call-template name="checkPlaceholder">
|
||||
<xsl:with-param name="placeholderElement" select="$placeholderElement"/>
|
||||
</xsl:call-template>
|
||||
</xsl:template>
|
||||
<xsl:template match="secondpartyrole">
|
||||
<xsl:param name="placeholderElement" select="/contract/meta/scope/secondpartyrole"/>
|
||||
<xsl:call-template name="checkPlaceholder">
|
||||
<xsl:with-param name="placeholderElement" select="$placeholderElement"/>
|
||||
</xsl:call-template>
|
||||
</xsl:template>
|
||||
<xsl:template match="contract_start_date">
|
||||
<xsl:param name="placeholderElement" select="/contract/meta/work/start_date"/>
|
||||
<xsl:call-template name="checkPlaceholder">
|
||||
<xsl:with-param name="placeholderElement" select="$placeholderElement"/>
|
||||
</xsl:call-template>
|
||||
</xsl:template>
|
||||
<xsl:template match="contract_end_date">
|
||||
<xsl:param name="placeholderElement" select="/contract/meta/work/end_date"/>
|
||||
<xsl:call-template name="checkPlaceholder">
|
||||
<xsl:with-param name="placeholderElement" select="$placeholderElement"/>
|
||||
</xsl:call-template>
|
||||
</xsl:template>
|
||||
<xsl:template match="contract_period">
|
||||
<xsl:variable name="startDate" select="xs:date(/contract/meta/work/start_date)"/>
|
||||
<xsl:variable name="endDate" select="xs:date(/contract/meta/work/end_date)"/>
|
||||
<!--<xsl:variable name="startDay" as="xs:integer" select="day-from-date($startDate)"/>
|
||||
<xsl:variable name="endDay" as="xs:integer" select="day-from-date($endDate)"/>-->
|
||||
<xsl:value-of select="my:calculatePeriod($endDate, $startDate)"/>
|
||||
</xsl:template>
|
||||
<xsl:template match="contract_total_fee">
|
||||
<xsl:value-of select="$denomination"/>
|
||||
<xsl:text> </xsl:text>
|
||||
<xsl:value-of select="$total_fee"/>
|
||||
<!-- no need to check for existence as it's a calculation of two checked values below -->
|
||||
</xsl:template>
|
||||
<xsl:template match="contract_planned_hours">
|
||||
<xsl:param name="placeholderElement" select="/contract/meta/work/planning/hours"/>
|
||||
<xsl:call-template name="checkPlaceholder">
|
||||
<xsl:with-param name="placeholderElement" select="$placeholderElement"/>
|
||||
</xsl:call-template>
|
||||
</xsl:template>
|
||||
<xsl:template match="contract_period_unit">
|
||||
<xsl:param name="placeholderElement" select="/contract/meta/work/planning/per"/>
|
||||
<xsl:call-template name="checkPlaceholder">
|
||||
<xsl:with-param name="placeholderElement" select="$placeholderElement"/>
|
||||
</xsl:call-template>
|
||||
</xsl:template>
|
||||
<xsl:template match="contract_activities">
|
||||
<xsl:choose>
|
||||
<xsl:when test="/contract/meta/work/activities/activity">
|
||||
<xsl:call-template name="generate_activities_xslt"/>
|
||||
</xsl:when>
|
||||
<xsl:otherwise>
|
||||
<fo:inline xsl:use-attribute-sets="errortext">XXXXXX</fo:inline>
|
||||
</xsl:otherwise>
|
||||
</xsl:choose>
|
||||
</xsl:template>
|
||||
<xsl:template match="contractor_name">
|
||||
<xsl:param name="placeholderElement" select="/contract/meta/contractor/name"/>
|
||||
<xsl:param name="placeholderElement2" select="/contract/meta/contractor/ctcompany"/>
|
||||
<xsl:call-template name="checkPlaceholder">
|
||||
<xsl:with-param name="placeholderElement" select="$placeholderElement"/>
|
||||
</xsl:call-template>
|
||||
<xsl:if test="/contract/meta/contractor/ctcompany">
|
||||
<xsl:text> (</xsl:text>
|
||||
<xsl:call-template name="checkPlaceholder">
|
||||
<xsl:with-param name="placeholderElement" select="$placeholderElement2"/>
|
||||
</xsl:call-template>
|
||||
<xsl:text>)</xsl:text>
|
||||
</xsl:if>
|
||||
</xsl:template>
|
||||
<xsl:template match="contractor_address">
|
||||
<xsl:param name="placeholderElement" select="/contract/meta/contractor/address"/>
|
||||
<xsl:call-template name="checkPlaceholder">
|
||||
<xsl:with-param name="placeholderElement" select="$placeholderElement"/>
|
||||
</xsl:call-template>
|
||||
</xsl:template>
|
||||
<xsl:template match="contractor_city">
|
||||
<xsl:param name="placeholderElement" select="/contract/meta/contractor/city"/>
|
||||
<xsl:call-template name="checkPlaceholder">
|
||||
<xsl:with-param name="placeholderElement" select="$placeholderElement"/>
|
||||
</xsl:call-template>
|
||||
</xsl:template>
|
||||
<xsl:template match="contractor_postalcode">
|
||||
<xsl:param name="placeholderElement" select="/contract/meta/contractor/postal_code"/>
|
||||
<xsl:call-template name="checkPlaceholder">
|
||||
<xsl:with-param name="placeholderElement" select="$placeholderElement"/>
|
||||
</xsl:call-template>
|
||||
</xsl:template>
|
||||
<xsl:template match="contractor_country">
|
||||
<xsl:param name="placeholderElement" select="/contract/meta/contractor/country"/>
|
||||
<xsl:call-template name="checkPlaceholder">
|
||||
<xsl:with-param name="placeholderElement" select="$placeholderElement"/>
|
||||
</xsl:call-template>
|
||||
</xsl:template>
|
||||
<xsl:template match="contractor_hourly_fee">
|
||||
<xsl:param name="placeholderElement" select="/contract/meta/contractor/hourly_fee"/>
|
||||
<xsl:value-of select="$denomination"/>
|
||||
<xsl:text> </xsl:text>
|
||||
<xsl:call-template name="checkPlaceholder">
|
||||
<xsl:with-param name="placeholderElement" select="$placeholderElement"/>
|
||||
</xsl:call-template>
|
||||
</xsl:template>
|
||||
<xsl:template match="contractor_email">
|
||||
<xsl:param name="placeholderElement" select="/contract/meta/contractor/email"/>
|
||||
<xsl:call-template name="checkPlaceholder">
|
||||
<xsl:with-param name="placeholderElement" select="$placeholderElement"/>
|
||||
</xsl:call-template>
|
||||
</xsl:template>
|
||||
<xsl:template match="contractor_possessive_pronoun">
|
||||
<xsl:param name="placeholderElement" select="/contract/meta/contractor/@sex"/>
|
||||
<xsl:call-template name="checkPlaceholder">
|
||||
<xsl:with-param name="placeholderElement" select="$placeholderElement"/>
|
||||
</xsl:call-template>
|
||||
</xsl:template>
|
||||
<xsl:template match="contractor_personal_pronoun">
|
||||
<xsl:param name="placeholderElement" select="/contract/meta/contractor/@sex"/>
|
||||
<xsl:call-template name="checkPlaceholder">
|
||||
<xsl:with-param name="placeholderElement" select="$placeholderElement"/>
|
||||
</xsl:call-template>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template name="checkPlaceholder">
|
||||
<xsl:param name="placeholderElement" select="/"/>
|
||||
<xsl:choose>
|
||||
<xsl:when test="normalize-space($placeholderElement)">
|
||||
<!-- placeholder exists and contains text -->
|
||||
<xsl:choose>
|
||||
<xsl:when test="self::p_fee or self::contractor_hourly_fee">
|
||||
<!-- pretty numbering for fee -->
|
||||
<xsl:variable name="fee" select="$placeholderElement * 1"/>
|
||||
<xsl:number value="$fee" grouping-separator="," grouping-size="3"/>
|
||||
</xsl:when>
|
||||
<xsl:when test="self::contract_end_date">
|
||||
<!-- pretty printing for date -->
|
||||
<xsl:value-of
|
||||
select="format-date(/contract/meta/work/end_date, '[MNn] [D1], [Y]', 'en', (), ())"
|
||||
/>
|
||||
</xsl:when>
|
||||
<xsl:when test="self::contract_start_date">
|
||||
<!-- pretty printing for date -->
|
||||
<xsl:value-of
|
||||
select="format-date(/contract/meta/work/start_date, '[MNn] [D1], [Y]', 'en', (), ())"
|
||||
/>
|
||||
</xsl:when>
|
||||
<xsl:when
|
||||
test="self::contract_period_unit and /contract/meta/scope/contract_type = 'single_engagement'">
|
||||
<!-- only use value for fixed term contracts; use 'engagement' for single engagement contract -->
|
||||
<xsl:call-template name="getString">
|
||||
<xsl:with-param name="stringID" select="'contract_engagement'"/>
|
||||
</xsl:call-template>
|
||||
</xsl:when>
|
||||
<xsl:when test="self::contractor_possessive_pronoun">
|
||||
<!-- some sexy logic -->
|
||||
<xsl:choose>
|
||||
<xsl:when test="//contractor/@sex = 'M'"><xsl:call-template name="getString">
|
||||
<xsl:with-param name="stringID" select="'possessive_m'"/>
|
||||
</xsl:call-template></xsl:when>
|
||||
<xsl:when test="//contractor/@sex = 'F'"><xsl:call-template name="getString">
|
||||
<xsl:with-param name="stringID" select="'possessive_f'"/>
|
||||
</xsl:call-template></xsl:when>
|
||||
<xsl:when test="//contractor/@sex = 'O'"><xsl:call-template name="getString">
|
||||
<xsl:with-param name="stringID" select="'possessive_o'"/>
|
||||
</xsl:call-template></xsl:when>
|
||||
</xsl:choose>
|
||||
</xsl:when>
|
||||
<xsl:when test="self::contractor_personal_pronoun">
|
||||
<!-- some sexy logic -->
|
||||
<xsl:choose>
|
||||
<xsl:when test="//contractor/@sex = 'M'"><xsl:call-template name="getString">
|
||||
<xsl:with-param name="stringID" select="'personal_m'"/>
|
||||
</xsl:call-template></xsl:when>
|
||||
<xsl:when test="//contractor/@sex = 'F'"><xsl:call-template name="getString">
|
||||
<xsl:with-param name="stringID" select="'personal_f'"/>
|
||||
</xsl:call-template></xsl:when>
|
||||
<xsl:when test="//contractor/@sex = 'O'"><xsl:call-template name="getString">
|
||||
<xsl:with-param name="stringID" select="'personal_o'"/>
|
||||
</xsl:call-template></xsl:when>
|
||||
</xsl:choose>
|
||||
</xsl:when>
|
||||
<xsl:otherwise>
|
||||
<xsl:value-of select="$placeholderElement"/>
|
||||
</xsl:otherwise>
|
||||
</xsl:choose>
|
||||
</xsl:when>
|
||||
<xsl:otherwise>
|
||||
<fo:inline xsl:use-attribute-sets="errortext">XXXXXX</fo:inline>
|
||||
</xsl:otherwise>
|
||||
</xsl:choose>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template name="generate_activities_xslt">
|
||||
<fo:list-block xsl:use-attribute-sets="list">
|
||||
<xsl:for-each select="/contract/meta/work/activities/activity">
|
||||
<fo:list-item>
|
||||
<!-- insert a bullet -->
|
||||
<fo:list-item-label end-indent="label-end()">
|
||||
<fo:block>
|
||||
<fo:inline>•</fo:inline>
|
||||
</fo:block>
|
||||
</fo:list-item-label>
|
||||
<!-- list text -->
|
||||
<fo:list-item-body start-indent="body-start()">
|
||||
<fo:block>
|
||||
<xsl:value-of select="."/>
|
||||
</fo:block>
|
||||
</fo:list-item-body>
|
||||
</fo:list-item>
|
||||
</xsl:for-each>
|
||||
</fo:list-block>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:function name="my:calculatePeriod">
|
||||
<xsl:param name="enddate"/>
|
||||
<xsl:param name="startdate"/>
|
||||
<xsl:variable name="startYear" as="xs:integer" select="year-from-date($startdate)"/>
|
||||
<xsl:variable name="startMonth" as="xs:integer" select="month-from-date($startdate)"/>
|
||||
<xsl:variable name="startDay" as="xs:integer" select="day-from-date($startdate)"/>
|
||||
<xsl:variable name="endYear" as="xs:integer" select="year-from-date($enddate)"/>
|
||||
<xsl:variable name="endMonth" as="xs:integer" select="month-from-date($enddate)"/>
|
||||
<xsl:variable name="endDay" as="xs:integer" select="day-from-date($enddate)"/>
|
||||
<xsl:variable name="startMonthNumberOfDays">
|
||||
<xsl:choose>
|
||||
<xsl:when test="xs:string($startMonth) = '1'">31</xsl:when>
|
||||
<xsl:when test="xs:string($startMonth) = '2'">
|
||||
<!-- I hate february -->
|
||||
<xsl:choose>
|
||||
<xsl:when test="$startYear mod 4 != 0">28</xsl:when>
|
||||
<xsl:when test="$startYear mod 100 != 0">29</xsl:when>
|
||||
<xsl:when test="$startYear mod 400 != 0">28</xsl:when>
|
||||
<xsl:otherwise>29</xsl:otherwise>
|
||||
</xsl:choose>
|
||||
</xsl:when>
|
||||
<xsl:when test="xs:string($startMonth) = '3'">31</xsl:when>
|
||||
<xsl:when test="xs:string($startMonth) = '4'">30</xsl:when>
|
||||
<xsl:when test="xs:string($startMonth) = '5'">31</xsl:when>
|
||||
<xsl:when test="xs:string($startMonth) = '6'">30</xsl:when>
|
||||
<xsl:when test="xs:string($startMonth) = '7'">31</xsl:when>
|
||||
<xsl:when test="xs:string($startMonth) = '8'">31</xsl:when>
|
||||
<xsl:when test="xs:string($startMonth) = '9'">30</xsl:when>
|
||||
<xsl:when test="xs:string($startMonth) = '10'">31</xsl:when>
|
||||
<xsl:when test="xs:string($startMonth) = '11'">30</xsl:when>
|
||||
<xsl:when test="xs:string($startMonth) = '12'">31</xsl:when>
|
||||
</xsl:choose>
|
||||
</xsl:variable>
|
||||
<xsl:variable name="numYears">
|
||||
<xsl:choose>
|
||||
<xsl:when test="$endMonth > $startMonth">
|
||||
<xsl:sequence select="$endYear - $startYear"/>
|
||||
</xsl:when>
|
||||
<xsl:when test="$endMonth < $startMonth">
|
||||
<xsl:sequence select="$endYear - $startYear - 1"/>
|
||||
</xsl:when>
|
||||
<xsl:otherwise>
|
||||
<xsl:choose>
|
||||
<xsl:when test="$endDay >= $startDay">
|
||||
<xsl:sequence select="$endYear - $startYear"/>
|
||||
</xsl:when>
|
||||
<xsl:otherwise>
|
||||
<!-- $endDay < $startDay -->
|
||||
<xsl:sequence select="$endYear - $startYear - 1"/>
|
||||
</xsl:otherwise>
|
||||
</xsl:choose>
|
||||
</xsl:otherwise>
|
||||
</xsl:choose>
|
||||
</xsl:variable>
|
||||
<xsl:variable name="numMonths">
|
||||
<xsl:choose>
|
||||
<xsl:when test="$endDay < $startDay">
|
||||
<xsl:sequence select="$endMonth - $startMonth - 1"/>
|
||||
</xsl:when>
|
||||
<xsl:otherwise>
|
||||
<!-- $endDay >= $startDay -->
|
||||
<xsl:sequence select="$endMonth - $startMonth"/>
|
||||
</xsl:otherwise>
|
||||
</xsl:choose>
|
||||
</xsl:variable>
|
||||
<xsl:variable name="numDays">
|
||||
<!--<xsl:choose>
|
||||
<xsl:when test="$numMonths < 1 and $numYears < 1">
|
||||
<!-\- only displaying days if contract is for less than a month -\->
|
||||
<xsl:sequence select="($enddate - $startdate) div xs:dayTimeDuration('P1D')"/>
|
||||
</xsl:when>
|
||||
<xsl:otherwise>
|
||||
<!-\- if contract is longer than a month, don't count days -\->
|
||||
<xsl:sequence select="0"/>
|
||||
</xsl:otherwise>
|
||||
</xsl:choose>-->
|
||||
<xsl:choose>
|
||||
<xsl:when test="$endDay - $startDay < 0"><xsl:value-of select="$startMonthNumberOfDays - $startDay + $endDay"/></xsl:when>
|
||||
<xsl:otherwise><xsl:value-of select="$endDay - $startDay"/></xsl:otherwise>
|
||||
</xsl:choose>
|
||||
</xsl:variable>
|
||||
<xsl:if test="$numYears > 0">
|
||||
<xsl:sequence select="$numYears"/>
|
||||
<xsl:text>year</xsl:text>
|
||||
<xsl:if test="$numYears > 1">
|
||||
<xsl:text>s</xsl:text>
|
||||
</xsl:if>
|
||||
<xsl:choose><xsl:when test="($numMonths > 0 and $numDays = 0) or ($numMonths = 0 and $numDays > 0)">
|
||||
<xsl:text> and</xsl:text>
|
||||
</xsl:when>
|
||||
<xsl:when test="$numMonths > 0 and $numDays > 0">
|
||||
<xsl:text>,</xsl:text>
|
||||
</xsl:when></xsl:choose>
|
||||
</xsl:if>
|
||||
<xsl:if test="$numMonths > 0">
|
||||
<xsl:sequence select="$numMonths"/>
|
||||
<xsl:text>month</xsl:text>
|
||||
<xsl:if test="$numMonths > 1">
|
||||
<xsl:text>s</xsl:text>
|
||||
</xsl:if>
|
||||
<xsl:if test="$numDays > 0">
|
||||
<xsl:text> and</xsl:text>
|
||||
</xsl:if>
|
||||
</xsl:if>
|
||||
<xsl:if test="$numDays > 0">
|
||||
<xsl:sequence select="$numDays"/>
|
||||
<xsl:text>day</xsl:text>
|
||||
<xsl:if test="$numDays > 1">
|
||||
<xsl:text>s</xsl:text>
|
||||
</xsl:if>
|
||||
</xsl:if>
|
||||
</xsl:function>
|
||||
</xsl:stylesheet>
|
||||
@@ -61,46 +61,14 @@
|
||||
</xsl:for-each>
|
||||
</targets>
|
||||
<permission_parties>
|
||||
<!--<client><xsl:comment>mandatory; please add client information</xsl:comment>
|
||||
<full_name><xsl:value-of select="/*/customer/full_name"/></full_name><xsl:comment>long client name, e.g. Sitting Duck B.V.</xsl:comment>
|
||||
<short_name><xsl:value-of select="/*/customer/short_name"/></short_name>
|
||||
<xsl:comment>short client name, e.g. Sitting Duck; if no short name: same as long name</xsl:comment>
|
||||
<legal_rep><xsl:value-of select="/*/customer/legal_rep"/></legal_rep><xsl:comment>customer legal representative (to sign offer)</xsl:comment>
|
||||
<waiver_rep><xsl:value-of select="/*/customer/waiver_rep"/></waiver_rep><xsl:comment>customer legal representative (to sign waiver; can be same person as legal_rep)</xsl:comment>
|
||||
<poc1><xsl:value-of select="/*/customer/poc1"/></poc1><xsl:comment>first point of contact for customer (during pentest); can be same person as above</xsl:comment>
|
||||
<address><xsl:value-of select="/*/customer/address"/></address>
|
||||
<city><xsl:value-of select="/*/customer/city"/></city>
|
||||
<country><xsl:value-of select="/*/customer/country"/></country>
|
||||
<coc>
|
||||
<xsl:attribute name="nationality"><xsl:value-of
|
||||
select="/*/customer/coc_nat"/></xsl:attribute>
|
||||
<xsl:value-of select="/*/customer/coc_no"/>
|
||||
</coc><xsl:comment>chamber of commerce number; if no chamber of commerce number, please delete the whole element</xsl:comment>
|
||||
</client>-->
|
||||
<xsl:element name="xi:include">
|
||||
<xsl:attribute name="href">client_info.xml</xsl:attribute>
|
||||
</xsl:element>
|
||||
<xsl:if test="/*/third_party">
|
||||
<xsl:for-each select="/*/third_party">
|
||||
<party>
|
||||
<full_name>
|
||||
<xsl:value-of select="/*/third_party/full_name"/>
|
||||
</full_name>
|
||||
<short_name>
|
||||
<xsl:value-of select="/*/third_party/short_name"/>
|
||||
</short_name>
|
||||
<xsl:comment>short party name; if no short name: same as long name</xsl:comment>
|
||||
<waiver_rep>
|
||||
<xsl:value-of select="/*/third_party/waiver_rep"/>
|
||||
</waiver_rep>
|
||||
<address><xsl:value-of select="/*/third_party/address"/></address>
|
||||
<city>
|
||||
<xsl:value-of select="/*/third_party/city"/>
|
||||
</city>
|
||||
<country>
|
||||
<xsl:value-of select="/*/third_party/country"/>
|
||||
</country>
|
||||
<xsl:copy-of select="node()"/>
|
||||
</party>
|
||||
</xsl:if>
|
||||
</xsl:for-each>
|
||||
</permission_parties>
|
||||
<pentestinfo>
|
||||
<duration>
|
||||
|
||||
16
xml/xslt/snippets.xslt
Normal file
16
xml/xslt/snippets.xslt
Normal file
@@ -0,0 +1,16 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
|
||||
xmlns:xs="http://www.w3.org/2001/XMLSchema"
|
||||
exclude-result-prefixes="xs"
|
||||
version="2.0">
|
||||
|
||||
<!-- imported from info2contract.xsl and qs2offerte.xsl to select the proper xml snippets -->
|
||||
<xsl:template name="docCheck">
|
||||
<xsl:param name="snippetDirectory"/>
|
||||
<xsl:param name="fileNameBase" select="'none'"/>
|
||||
<xsl:variable name="file"
|
||||
select="concat('snippets/', $snippetDirectory, '/', $lang, '/', $fileNameBase, '.xml')"/>
|
||||
<xsl:value-of select="$file"/>
|
||||
</xsl:template>
|
||||
|
||||
</xsl:stylesheet>
|
||||
@@ -15,7 +15,7 @@
|
||||
</xsl:if>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template match="title">
|
||||
<xsl:template match="title[not(parent::biblioentry)]">
|
||||
<xsl:variable name="LEVEL" select="count(ancestor::*) - 1"/>
|
||||
<xsl:variable name="CLASS">
|
||||
<!-- use title-x for all levels -->
|
||||
|
||||
@@ -124,11 +124,25 @@
|
||||
<xsl:attribute name="font-size">60%</xsl:attribute>
|
||||
<xsl:attribute name="vertical-align">sub</xsl:attribute>
|
||||
</xsl:attribute-set>
|
||||
<!-- bibliography -->
|
||||
<xsl:attribute-set name="title.book" use-attribute-sets="italic"/>
|
||||
<xsl:attribute-set name="title.article"/>
|
||||
<xsl:attribute-set name="journal" use-attribute-sets="italic"/>
|
||||
<xsl:attribute-set name="website"/>
|
||||
<xsl:attribute-set name="info"/>
|
||||
<xsl:attribute-set name="publisher"/>
|
||||
<xsl:attribute-set name="pubdate"/>
|
||||
<!-- blocks -->
|
||||
<xsl:attribute-set name="p">
|
||||
<xsl:attribute name="margin-bottom">
|
||||
<xsl:value-of select="$small-space"/>
|
||||
</xsl:attribute>
|
||||
</xsl:attribute-set>
|
||||
<xsl:attribute-set name="biblioentry">
|
||||
<xsl:attribute name="margin-bottom">
|
||||
<xsl:value-of select="$small-space"/>
|
||||
</xsl:attribute>
|
||||
</xsl:attribute-set>
|
||||
<xsl:attribute-set name="list" use-attribute-sets="p"/>
|
||||
<xsl:attribute-set name="last">
|
||||
<xsl:attribute name="margin-bottom">
|
||||
@@ -162,15 +176,28 @@
|
||||
<xsl:attribute name="page-height">29.7cm</xsl:attribute>
|
||||
<xsl:attribute name="page-width">21.0cm</xsl:attribute>
|
||||
</xsl:attribute-set>
|
||||
<xsl:attribute-set name="region-body">
|
||||
<xsl:attribute-set name="region-body-cover">
|
||||
<xsl:attribute name="margin-top">1cm</xsl:attribute>
|
||||
<xsl:attribute name="margin-bottom">1cm</xsl:attribute>
|
||||
</xsl:attribute-set>
|
||||
<xsl:attribute-set name="region-before">
|
||||
<xsl:attribute-set name="region-before-cover">
|
||||
<xsl:attribute name="precedence">true</xsl:attribute>
|
||||
<xsl:attribute name="extent">0.6cm</xsl:attribute>
|
||||
</xsl:attribute-set>
|
||||
<xsl:attribute-set name="region-after">
|
||||
<xsl:attribute-set name="region-after-cover">
|
||||
<xsl:attribute name="precedence">true</xsl:attribute>
|
||||
<xsl:attribute name="extent">0.6cm</xsl:attribute>
|
||||
<xsl:attribute name="padding">0</xsl:attribute>
|
||||
</xsl:attribute-set>
|
||||
<xsl:attribute-set name="region-body-content">
|
||||
<xsl:attribute name="margin-top">1cm</xsl:attribute>
|
||||
<xsl:attribute name="margin-bottom">1cm</xsl:attribute>
|
||||
</xsl:attribute-set>
|
||||
<xsl:attribute-set name="region-before-content">
|
||||
<xsl:attribute name="precedence">true</xsl:attribute>
|
||||
<xsl:attribute name="extent">0.6cm</xsl:attribute>
|
||||
</xsl:attribute-set>
|
||||
<xsl:attribute-set name="region-after-content">
|
||||
<xsl:attribute name="precedence">true</xsl:attribute>
|
||||
<xsl:attribute name="extent">0.6cm</xsl:attribute>
|
||||
<xsl:attribute name="padding">0</xsl:attribute>
|
||||
@@ -193,15 +220,6 @@
|
||||
<xsl:attribute name="text-align">center</xsl:attribute>
|
||||
<xsl:attribute name="margin-bottom" select="$small-space"/>
|
||||
</xsl:attribute-set>
|
||||
<xsl:attribute-set name="logo">
|
||||
<xsl:attribute name="padding-top">2cm</xsl:attribute>
|
||||
<xsl:attribute name="padding-bottom">3cm</xsl:attribute>
|
||||
<xsl:attribute name="src">url(../graphics/logo.png)</xsl:attribute>
|
||||
<xsl:attribute name="width">70mm</xsl:attribute>
|
||||
<xsl:attribute name="content-width">scale-to-fit</xsl:attribute>
|
||||
<xsl:attribute name="content-height">scale-to-fit</xsl:attribute>
|
||||
<xsl:attribute name="scaling">uniform</xsl:attribute>
|
||||
</xsl:attribute-set>
|
||||
|
||||
<!-- tables -->
|
||||
<xsl:attribute-set name="borders">
|
||||
|
||||
195
xml/xslt/styles_con.xslt
Normal file
195
xml/xslt/styles_con.xslt
Normal file
@@ -0,0 +1,195 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
|
||||
xmlns:xs="http://www.w3.org/2001/XMLSchema"
|
||||
exclude-result-prefixes="xs" xmlns:fo="http://www.w3.org/1999/XSL/Format"
|
||||
version="2.0">
|
||||
|
||||
<xsl:import href="styles.xslt"/>
|
||||
|
||||
<!-- variables -->
|
||||
|
||||
<xsl:variable name="medium-space">10pt</xsl:variable>
|
||||
|
||||
|
||||
|
||||
<!-- Text -->
|
||||
|
||||
<xsl:attribute-set name="title" use-attribute-sets="bold">
|
||||
<xsl:attribute name="keep-with-next.within-page">always</xsl:attribute>
|
||||
<xsl:attribute name="text-align">center</xsl:attribute>
|
||||
<xsl:attribute name="color">white</xsl:attribute>
|
||||
<xsl:attribute name="font-weight">bold</xsl:attribute>
|
||||
<xsl:attribute name="text-transform">uppercase</xsl:attribute>
|
||||
<!-- letter spacing is dodgy in fop when there are certain characters in the string (e.g. a 'V'); commenting this out until that is fixed -->
|
||||
<!-- it's also dodgy in combination with centered text, btw -->
|
||||
<!--<xsl:attribute name="letter-spacing.precedence">0</xsl:attribute>
|
||||
<xsl:attribute name="letter-spacing.optimum">3mm</xsl:attribute>
|
||||
<xsl:attribute name="letter-spacing.minimum">3mm</xsl:attribute>
|
||||
<xsl:attribute name="letter-spacing.maximum">3mm</xsl:attribute>-->
|
||||
</xsl:attribute-set>
|
||||
<xsl:attribute-set name="title-0" use-attribute-sets="title">
|
||||
<xsl:attribute name="font-size">18pt</xsl:attribute>
|
||||
<xsl:attribute name="margin-bottom">1cm</xsl:attribute>
|
||||
<xsl:attribute name="background-color">#FF5C00</xsl:attribute>
|
||||
<xsl:attribute name="text-transform">uppercase</xsl:attribute>
|
||||
</xsl:attribute-set>
|
||||
<xsl:attribute-set name="title-1" use-attribute-sets="title">
|
||||
<xsl:attribute name="font-size">18pt</xsl:attribute>
|
||||
<xsl:attribute name="margin-bottom">1cm</xsl:attribute>
|
||||
<xsl:attribute name="background-color">#FF5C00</xsl:attribute>
|
||||
<xsl:attribute name="text-transform">uppercase</xsl:attribute>
|
||||
</xsl:attribute-set>
|
||||
<xsl:attribute-set name="title-2" use-attribute-sets="title">
|
||||
<xsl:attribute name="font-style">italic</xsl:attribute>
|
||||
<xsl:attribute name="font-size">14pt</xsl:attribute>
|
||||
<xsl:attribute name="margin-bottom">0.8cm</xsl:attribute>
|
||||
<xsl:attribute name="background-color">#999999</xsl:attribute>
|
||||
<xsl:attribute name="text-transform">uppercase</xsl:attribute>
|
||||
</xsl:attribute-set>
|
||||
<xsl:attribute-set name="title-3" use-attribute-sets="title">
|
||||
<xsl:attribute name="font-size">14pt</xsl:attribute>
|
||||
<xsl:attribute name="margin-bottom">0.8cm</xsl:attribute>
|
||||
<xsl:attribute name="background-color">#999999</xsl:attribute>
|
||||
</xsl:attribute-set>
|
||||
<xsl:attribute-set name="title-4" use-attribute-sets="title">
|
||||
<xsl:attribute name="margin-bottom">5pt</xsl:attribute>
|
||||
</xsl:attribute-set>
|
||||
<xsl:attribute-set name="title-client" use-attribute-sets="title-0">
|
||||
<xsl:attribute name="background-color">#999999</xsl:attribute>
|
||||
<xsl:attribute name="text-transform">uppercase</xsl:attribute>
|
||||
</xsl:attribute-set>
|
||||
<xsl:attribute-set name="for">
|
||||
<xsl:attribute name="font-size">16pt</xsl:attribute>
|
||||
<xsl:attribute name="text-align">center</xsl:attribute>
|
||||
<xsl:attribute name="font-weight">bold</xsl:attribute>
|
||||
<xsl:attribute name="margin-bottom">1cm</xsl:attribute>
|
||||
</xsl:attribute-set>
|
||||
<xsl:attribute-set name="p">
|
||||
<xsl:attribute name="margin-bottom">
|
||||
<xsl:value-of select="$medium-space"/>
|
||||
</xsl:attribute>
|
||||
<xsl:attribute name="line-height">18pt</xsl:attribute>
|
||||
</xsl:attribute-set>
|
||||
<xsl:attribute-set name="list" use-attribute-sets="p"/>
|
||||
<xsl:attribute-set name="last">
|
||||
<xsl:attribute name="margin-bottom">
|
||||
<xsl:value-of select="$very-large-space"/>
|
||||
</xsl:attribute>
|
||||
</xsl:attribute-set>
|
||||
<xsl:attribute-set name="pre" use-attribute-sets="borders TableFont">
|
||||
<xsl:attribute name="border-style">double</xsl:attribute>
|
||||
<xsl:attribute name="border-width">2pt</xsl:attribute>
|
||||
<xsl:attribute name="margin-bottom">
|
||||
<xsl:value-of select="$medium-space"/>
|
||||
</xsl:attribute>
|
||||
<xsl:attribute name="white-space-collapse">false</xsl:attribute>
|
||||
<xsl:attribute name="linefeed-treatment">preserve</xsl:attribute>
|
||||
<xsl:attribute name="white-space-treatment">preserve</xsl:attribute>
|
||||
</xsl:attribute-set>
|
||||
<xsl:attribute-set name="code" use-attribute-sets="borders pre">
|
||||
<xsl:attribute name="font-family">LiberationMono</xsl:attribute>
|
||||
<xsl:attribute name="font-size">9pt</xsl:attribute>
|
||||
</xsl:attribute-set>
|
||||
<xsl:attribute-set name="finding-meta">
|
||||
<xsl:attribute name="margin-bottom" select="$small-space"/>
|
||||
</xsl:attribute-set>
|
||||
|
||||
<!-- Pages -->
|
||||
<xsl:attribute-set name="PortraitPage">
|
||||
<xsl:attribute name="margin-top">0.5cm</xsl:attribute>
|
||||
<xsl:attribute name="margin-bottom">1.5cm</xsl:attribute>
|
||||
<xsl:attribute name="margin-left">1.5cm</xsl:attribute>
|
||||
<xsl:attribute name="margin-right">1.5cm</xsl:attribute>
|
||||
<xsl:attribute name="page-height">29.7cm</xsl:attribute>
|
||||
<xsl:attribute name="page-width">21.0cm</xsl:attribute>
|
||||
</xsl:attribute-set>
|
||||
<xsl:attribute-set name="region-body-cover">
|
||||
<xsl:attribute name="margin-top">3.6cm</xsl:attribute>
|
||||
<xsl:attribute name="margin-bottom">1cm</xsl:attribute>
|
||||
</xsl:attribute-set>
|
||||
<xsl:attribute-set name="region-before-cover">
|
||||
<xsl:attribute name="precedence">true</xsl:attribute>
|
||||
<xsl:attribute name="extent">2.7cm</xsl:attribute>
|
||||
</xsl:attribute-set>
|
||||
<xsl:attribute-set name="region-after-cover">
|
||||
<xsl:attribute name="precedence">true</xsl:attribute>
|
||||
<xsl:attribute name="extent">0.6cm</xsl:attribute>
|
||||
<xsl:attribute name="padding">0</xsl:attribute>
|
||||
</xsl:attribute-set>
|
||||
<xsl:attribute-set name="region-body-content">
|
||||
<xsl:attribute name="margin-top">2cm</xsl:attribute>
|
||||
<xsl:attribute name="margin-bottom">1cm</xsl:attribute>
|
||||
</xsl:attribute-set>
|
||||
<xsl:attribute-set name="region-before-content">
|
||||
<xsl:attribute name="precedence">true</xsl:attribute>
|
||||
<xsl:attribute name="extent">0.6cm</xsl:attribute>
|
||||
</xsl:attribute-set>
|
||||
<xsl:attribute-set name="region-after-content">
|
||||
<xsl:attribute name="precedence">true</xsl:attribute>
|
||||
<xsl:attribute name="extent">0.6cm</xsl:attribute>
|
||||
<xsl:attribute name="padding">0</xsl:attribute>
|
||||
</xsl:attribute-set>
|
||||
<xsl:attribute-set name="header">
|
||||
<xsl:attribute name="text-align">right</xsl:attribute>
|
||||
<xsl:attribute name="font-weight">normal</xsl:attribute>
|
||||
</xsl:attribute-set>
|
||||
<xsl:attribute-set name="footer">
|
||||
<xsl:attribute name="text-align">center</xsl:attribute>
|
||||
</xsl:attribute-set>
|
||||
<xsl:attribute-set name="logo">
|
||||
<xsl:attribute name="padding-top">0cm</xsl:attribute>
|
||||
<xsl:attribute name="padding-bottom">0cm</xsl:attribute>
|
||||
<xsl:attribute name="src">url(../graphics/logo_alt.png)</xsl:attribute>
|
||||
<xsl:attribute name="width">30mm</xsl:attribute>
|
||||
<xsl:attribute name="content-width">scale-to-fit</xsl:attribute>
|
||||
<xsl:attribute name="content-height">scale-to-fit</xsl:attribute>
|
||||
<xsl:attribute name="scaling">uniform</xsl:attribute>
|
||||
</xsl:attribute-set>
|
||||
|
||||
<!-- colors -->
|
||||
<xsl:attribute-set name="bg-orange">
|
||||
<xsl:attribute name="background-color">#FF5C00</xsl:attribute>
|
||||
</xsl:attribute-set>
|
||||
|
||||
<!-- graphics -->
|
||||
<xsl:attribute-set name="graphics-block">
|
||||
<xsl:attribute name="text-align">center</xsl:attribute>
|
||||
<xsl:attribute name="margin-bottom" select="$small-space"/>
|
||||
</xsl:attribute-set>
|
||||
|
||||
<!-- tables -->
|
||||
<xsl:attribute-set name="borders">
|
||||
<xsl:attribute name="border-width">
|
||||
<xsl:value-of select="$border-width"/>
|
||||
</xsl:attribute>
|
||||
<xsl:attribute name="border-style">
|
||||
<xsl:value-of select="$border-style"/>
|
||||
</xsl:attribute>
|
||||
<xsl:attribute name="border-color">
|
||||
<xsl:value-of select="$border-color"/>
|
||||
</xsl:attribute>
|
||||
</xsl:attribute-set>
|
||||
<xsl:attribute-set name="th" use-attribute-sets="td bg-orange"/>
|
||||
<xsl:attribute-set name="td">
|
||||
<xsl:attribute name="padding">2pt</xsl:attribute>
|
||||
</xsl:attribute-set>
|
||||
<xsl:attribute-set name="table">
|
||||
<xsl:attribute name="margin-bottom" select="$small-space"/>
|
||||
</xsl:attribute-set>
|
||||
|
||||
<!-- lists -->
|
||||
<xsl:attribute-set name="li">
|
||||
<xsl:attribute name="margin-bottom" select="$small-space"/>
|
||||
</xsl:attribute-set>
|
||||
|
||||
<!-- ToC -->
|
||||
<xsl:attribute-set name="index" use-attribute-sets="break-after"/>
|
||||
|
||||
<!-- Breaks -->
|
||||
<xsl:attribute-set name="break-before">
|
||||
<xsl:attribute name="break-before">page</xsl:attribute>
|
||||
</xsl:attribute-set>
|
||||
<xsl:attribute-set name="break-after">
|
||||
<xsl:attribute name="break-after">page</xsl:attribute>
|
||||
</xsl:attribute-set>
|
||||
</xsl:stylesheet>
|
||||
@@ -61,6 +61,15 @@
|
||||
<xsl:attribute-set name="toc-block">
|
||||
<xsl:attribute name="background-color">orange</xsl:attribute>
|
||||
</xsl:attribute-set>
|
||||
<xsl:attribute-set name="logo">
|
||||
<xsl:attribute name="padding-top">2cm</xsl:attribute>
|
||||
<xsl:attribute name="padding-bottom">3cm</xsl:attribute>
|
||||
<xsl:attribute name="src">url(../graphics/logo.png)</xsl:attribute>
|
||||
<xsl:attribute name="width">70mm</xsl:attribute>
|
||||
<xsl:attribute name="content-width">scale-to-fit</xsl:attribute>
|
||||
<xsl:attribute name="content-height">scale-to-fit</xsl:attribute>
|
||||
<xsl:attribute name="scaling">uniform</xsl:attribute>
|
||||
</xsl:attribute-set>
|
||||
|
||||
|
||||
<!-- colors -->
|
||||
|
||||
@@ -31,15 +31,28 @@
|
||||
<xsl:attribute name="page-height">29.7cm</xsl:attribute>
|
||||
<xsl:attribute name="page-width">21.0cm</xsl:attribute>
|
||||
</xsl:attribute-set>
|
||||
<xsl:attribute-set name="region-body">
|
||||
<xsl:attribute-set name="region-body-cover">
|
||||
<xsl:attribute name="margin-top">3.6cm</xsl:attribute>
|
||||
<xsl:attribute name="margin-bottom">1cm</xsl:attribute>
|
||||
</xsl:attribute-set>
|
||||
<xsl:attribute-set name="region-before">
|
||||
<xsl:attribute-set name="region-before-cover">
|
||||
<xsl:attribute name="precedence">true</xsl:attribute>
|
||||
<xsl:attribute name="extent">2.7cm</xsl:attribute>
|
||||
</xsl:attribute-set>
|
||||
<xsl:attribute-set name="region-after">
|
||||
<xsl:attribute-set name="region-after-cover">
|
||||
<xsl:attribute name="precedence">true</xsl:attribute>
|
||||
<xsl:attribute name="extent">0.6cm</xsl:attribute>
|
||||
<xsl:attribute name="padding">0</xsl:attribute>
|
||||
</xsl:attribute-set>
|
||||
<xsl:attribute-set name="region-body-content">
|
||||
<xsl:attribute name="margin-top">2cm</xsl:attribute>
|
||||
<xsl:attribute name="margin-bottom">1cm</xsl:attribute>
|
||||
</xsl:attribute-set>
|
||||
<xsl:attribute-set name="region-before-content">
|
||||
<xsl:attribute name="precedence">true</xsl:attribute>
|
||||
<xsl:attribute name="extent">0.6cm</xsl:attribute>
|
||||
</xsl:attribute-set>
|
||||
<xsl:attribute-set name="region-after-content">
|
||||
<xsl:attribute name="precedence">true</xsl:attribute>
|
||||
<xsl:attribute name="extent">0.6cm</xsl:attribute>
|
||||
<xsl:attribute name="padding">0</xsl:attribute>
|
||||
|
||||
@@ -103,15 +103,28 @@
|
||||
<xsl:attribute name="page-height">29.7cm</xsl:attribute>
|
||||
<xsl:attribute name="page-width">21.0cm</xsl:attribute>
|
||||
</xsl:attribute-set>
|
||||
<xsl:attribute-set name="region-body">
|
||||
<xsl:attribute-set name="region-body-cover">
|
||||
<xsl:attribute name="margin-top">1cm</xsl:attribute>
|
||||
<xsl:attribute name="margin-bottom">1cm</xsl:attribute>
|
||||
</xsl:attribute-set>
|
||||
<xsl:attribute-set name="region-before">
|
||||
<xsl:attribute-set name="region-before-cover">
|
||||
<xsl:attribute name="precedence">true</xsl:attribute>
|
||||
<xsl:attribute name="extent">0.6cm</xsl:attribute>
|
||||
</xsl:attribute-set>
|
||||
<xsl:attribute-set name="region-after">
|
||||
<xsl:attribute-set name="region-after-cover">
|
||||
<xsl:attribute name="precedence">true</xsl:attribute>
|
||||
<xsl:attribute name="extent">0.6cm</xsl:attribute>
|
||||
<xsl:attribute name="padding">0</xsl:attribute>
|
||||
</xsl:attribute-set>
|
||||
<xsl:attribute-set name="region-body-content">
|
||||
<xsl:attribute name="margin-top">1cm</xsl:attribute>
|
||||
<xsl:attribute name="margin-bottom">1cm</xsl:attribute>
|
||||
</xsl:attribute-set>
|
||||
<xsl:attribute-set name="region-before-content">
|
||||
<xsl:attribute name="precedence">true</xsl:attribute>
|
||||
<xsl:attribute name="extent">0.6cm</xsl:attribute>
|
||||
</xsl:attribute-set>
|
||||
<xsl:attribute-set name="region-after-content">
|
||||
<xsl:attribute name="precedence">true</xsl:attribute>
|
||||
<xsl:attribute name="extent">0.6cm</xsl:attribute>
|
||||
<xsl:attribute name="padding">0</xsl:attribute>
|
||||
|
||||
@@ -61,6 +61,15 @@
|
||||
<xsl:attribute-set name="toc-block">
|
||||
<xsl:attribute name="background-color">orange</xsl:attribute>
|
||||
</xsl:attribute-set>
|
||||
<xsl:attribute-set name="logo">
|
||||
<xsl:attribute name="padding-top">2cm</xsl:attribute>
|
||||
<xsl:attribute name="padding-bottom">3cm</xsl:attribute>
|
||||
<xsl:attribute name="src">url(../graphics/logo.png)</xsl:attribute>
|
||||
<xsl:attribute name="width">70mm</xsl:attribute>
|
||||
<xsl:attribute name="content-width">scale-to-fit</xsl:attribute>
|
||||
<xsl:attribute name="content-height">scale-to-fit</xsl:attribute>
|
||||
<xsl:attribute name="scaling">uniform</xsl:attribute>
|
||||
</xsl:attribute-set>
|
||||
|
||||
|
||||
<!-- colors -->
|
||||
|
||||
@@ -11,7 +11,7 @@
|
||||
<xsl:import href="att-set.xslt"/>
|
||||
<xsl:import href="block.xslt"/>
|
||||
<xsl:import href="findings.xslt"/>
|
||||
<xsl:import href="auto.xsl"/>
|
||||
<xsl:import href="auto.xslt"/>
|
||||
<xsl:import href="table.xslt"/>
|
||||
<xsl:import href="lists.xslt"/>
|
||||
<xsl:import href="inline.xslt"/>
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
version="2.0">
|
||||
|
||||
<xsl:template match="table">
|
||||
<fo:table table-layout="fixed" width="100%">
|
||||
<fo:block xsl:use-attribute-sets="p"><fo:table table-layout="fixed" width="100%">
|
||||
<xsl:call-template name="checkIfLast"/>
|
||||
<xsl:choose>
|
||||
<xsl:when test="@cols">
|
||||
@@ -20,7 +20,7 @@
|
||||
<fo:table-body>
|
||||
<xsl:apply-templates select="*"/>
|
||||
</fo:table-body>
|
||||
</fo:table>
|
||||
</fo:table></fo:block>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template name="build-columns">
|
||||
|
||||
@@ -113,7 +113,7 @@
|
||||
</xsl:template>
|
||||
|
||||
|
||||
<xsl:template name="generate_waiver_signature_box">
|
||||
<xsl:template match="generate_waiver_signature_box">
|
||||
<fo:block keep-together.within-page="always" xsl:use-attribute-sets="signaturebox">
|
||||
<fo:table width="100%" table-layout="fixed">
|
||||
<fo:table-column column-width="proportional-column-width(10)"/>
|
||||
|
||||
Reference in New Issue
Block a user