XML file conversion using XSLT or similar approach.
Both input and output are XML files with a similar hierarchical structure.
The input XML file has an associated XML schema.
The format of the XML output file is described in a DTD. The DTD for the output file has ca. 30 !ELEMENT lines.
There is a need for transforming a few number ranges between the input and the output file (e.g. the value "20" in the input file needs to be converted into "5" in the output file).
In your bid please budget time for testing, documentation and at least 2 cycles of minor change requests.
## Deliverables
To give an idea of the complexity here is the DTD for the XML output file:
<?xml version="1.0" encoding="UTF-8"?>
<!-- A report has a report summary section, a host summary section and a list of host component instances -->
<!-- this is the flat xml version -->
<!ELEMENT Report (ReportSummary, HostsSummary, Hosts)>
<!-- summary section describes time nature of the report -->
<!ELEMENT ReportSummary (TimeSummary, SecuritySummary)>
<!-- Time summary section consists of time of report, start/end time of scan and elaspsed time -->
<!ELEMENT TimeSummary (ReportTime, StartTime, EndTime, ElapsedTime)>
<!ELEMENT ReportTime (#PCDATA)>
<!ELEMENT StartTime (#PCDATA)>
<!ELEMENT EndTime (#PCDATA)>
<!ELEMENT ElapsedTime (#PCDATA)>
<!-- security summary consists of total number, high medium low info host components -->
<!ELEMENT SecuritySummary (TotalNumber, HighSeverity, MediumSeverity, LowSeverity, Informational)>
<!ELEMENT TotalNumber (#PCDATA)>
<!ELEMENT HighSeverity (#PCDATA)>
<!ELEMENT MediumSeverity (#PCDATA)>
<!ELEMENT LowSeverity (#PCDATA)>
<!ELEMENT Informational (#PCDATA)>
<!-- host summary sections describes the systems -->
<!ELEMENT HostsSummary (HostInfo*)>
<!ELEMENT HostInfo (IP, HighSeverity, LowSeverity, Informational)>
<!ELEMENT IP (#PCDATA)>
<!-- hosts contain many individual component instances -->
<!ELEMENT Hosts (SingleInstance*)>
<!-- each single instance -->
<!ELEMENT SingleInstance (IP, OriginalDescription, PortNumber, Protocol, PortProtocol?, ServiceName, Severity, Description, Solution, RiskFactor, EVC, DIB, OtherRef)>
<!ELEMENT OriginalDescription (#PCDATA)>
<!ELEMENT PortNumber (#PCDATA)>
<!ELEMENT Protocol (#PCDATA)>
<!ELEMENT PortProtocol (#PCDATA)>
<!ELEMENT ServiceName (#PCDATA)>
<!ELEMENT Severity (#PCDATA)>
<!ELEMENT Description (#PCDATA)>
<!ELEMENT Solution (#PCDATA)>
<!ELEMENT RiskFactor (#PCDATA)>
<!ELEMENT EVC (#PCDATA)>
<!ELEMENT DIB (#PCDATA)>
<!ELEMENT OtherRef (#PCDATA)>
GENERAL:
1) Complete and fully-functional working program(s) in executable form as well as complete source code of all work done.
2) Deliverables must be in ready-to-run condition, as follows (depending on the nature of the deliverables):
a) For web sites or other server-side deliverables intended to only ever exist in one place in the Buyer's environment--Deliverables must be installed by the Seller in ready-to-run condition in the Buyer's environment.
b) For all others including desktop software or software the buyer intends to distribute: A software installation package that will install the software in ready-to-run condition on the platform(s) specified in this bid request.
3) All deliverables will be considered "work made for hire" under U.S. Copyright law. Buyer will receive exclusive and complete copyrights to all work purchased. (No GPL, GNU, 3rd party components, etc. unless all copyright ramifications are explained AND AGREED TO by the buyer on the site per the coder's Seller Legal Agreement).
## Platform
Depends on approach taken. If XSLT, it should run on the common XSLT processors. If another approach is taken Python would be desirable so we can run it on several platforms (Windows, Linux, BSD).