Initial commit
This commit is contained in:
12
Frontend/Dockerfile
Normal file
12
Frontend/Dockerfile
Normal file
@@ -0,0 +1,12 @@
|
||||
FROM nginx:stable-alpine
|
||||
|
||||
COPY ./* /usr/share/nginx/html/Frontend/
|
||||
|
||||
# COPY ./xpath.html /usr/share/nginx/html
|
||||
|
||||
|
||||
# COPY ./index.html /usr/share/nginx/html
|
||||
# COPY ./logo.png /usr/share/nginx/html
|
||||
# COPY ./styles.css /usr/share/nginx/html
|
||||
# COPY ./common.css /usr/share/nginx/html
|
||||
# COPY ./favicon.ico /usr/share/nginx/html
|
||||
2
Frontend/jquery-3.6.0.slim.min.js
vendored
Normal file
2
Frontend/jquery-3.6.0.slim.min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
25
Frontend/new_css/drytest.html
Normal file
25
Frontend/new_css/drytest.html
Normal file
@@ -0,0 +1,25 @@
|
||||
<!DOCTYPE html>
|
||||
|
||||
<head>
|
||||
<link rel="stylesheet" href="r11form.css">
|
||||
<!-- <script src="scripts.js"></script> -->
|
||||
</head>
|
||||
|
||||
<body>
|
||||
|
||||
|
||||
<div class="collapsibleList">
|
||||
<button class="section-button collapseTrigger">Node-Set</button>
|
||||
<div class="collapsibleContent">
|
||||
[1.0] <a href="#" onClick="return false;" class="collapseTrigger"><code>fn:last()</code></a>
|
||||
<div class="collapsibleContent">
|
||||
Returns the position of the last node in the context list <br>
|
||||
<code>Link do dokumentacji W3C: <a href="https://www.w3.org/TR/1999/REC-xpath-19991116/#section-Node-Set-Functions" target="_parent">Node-Set-Functions</code></a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
</body>
|
||||
BIN
Frontend/new_css/font/fontello.eot
Normal file
BIN
Frontend/new_css/font/fontello.eot
Normal file
Binary file not shown.
14
Frontend/new_css/font/fontello.svg
Normal file
14
Frontend/new_css/font/fontello.svg
Normal file
@@ -0,0 +1,14 @@
|
||||
<?xml version="1.0" standalone="no"?>
|
||||
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
|
||||
<svg xmlns="http://www.w3.org/2000/svg">
|
||||
<metadata>Copyright (C) 2021 by original authors @ fontello.com</metadata>
|
||||
<defs>
|
||||
<font id="fontello" horiz-adv-x="1000" >
|
||||
<font-face font-family="fontello" font-weight="400" font-stretch="normal" units-per-em="1000" ascent="850" descent="-150" />
|
||||
<missing-glyph horiz-adv-x="1000" />
|
||||
<glyph glyph-name="plus" unicode="" d="M786 439v-107q0-22-16-38t-38-15h-232v-233q0-22-16-37t-38-16h-107q-22 0-38 16t-15 37v233h-232q-23 0-38 15t-16 38v107q0 23 16 38t38 16h232v232q0 22 15 38t38 16h107q23 0 38-16t16-38v-232h232q23 0 38-16t16-38z" horiz-adv-x="785.7" />
|
||||
|
||||
<glyph glyph-name="cancel" unicode="" d="M724 112q0-22-15-38l-76-76q-16-15-38-15t-38 15l-164 165-164-165q-16-15-38-15t-38 15l-76 76q-16 16-16 38t16 38l164 164-164 164q-16 16-16 38t16 38l76 76q16 16 38 16t38-16l164-164 164 164q16 16 38 16t38-16l76-76q15-15 15-38t-15-38l-164-164 164-164q15-15 15-38z" horiz-adv-x="785.7" />
|
||||
</font>
|
||||
</defs>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 1.1 KiB |
BIN
Frontend/new_css/font/fontello.ttf
Normal file
BIN
Frontend/new_css/font/fontello.ttf
Normal file
Binary file not shown.
BIN
Frontend/new_css/font/fontello.woff
Normal file
BIN
Frontend/new_css/font/fontello.woff
Normal file
Binary file not shown.
BIN
Frontend/new_css/font/fontello.woff2
Normal file
BIN
Frontend/new_css/font/fontello.woff2
Normal file
Binary file not shown.
59
Frontend/new_css/fontello.css
vendored
Normal file
59
Frontend/new_css/fontello.css
vendored
Normal file
@@ -0,0 +1,59 @@
|
||||
@font-face {
|
||||
font-family: 'fontello';
|
||||
src: url('font/fontello.eot?49304387');
|
||||
src: url('font/fontello.eot?49304387#iefix') format('embedded-opentype'),
|
||||
url('font/fontello.woff2?49304387') format('woff2'),
|
||||
url('font/fontello.woff?49304387') format('woff'),
|
||||
url('font/fontello.ttf?49304387') format('truetype'),
|
||||
url('font/fontello.svg?49304387#fontello') format('svg');
|
||||
font-weight: normal;
|
||||
font-style: normal;
|
||||
}
|
||||
/* Chrome hack: SVG is rendered more smooth in Windozze. 100% magic, uncomment if you need it. */
|
||||
/* Note, that will break hinting! In other OS-es font will be not as sharp as it could be */
|
||||
/*
|
||||
@media screen and (-webkit-min-device-pixel-ratio:0) {
|
||||
@font-face {
|
||||
font-family: 'fontello';
|
||||
src: url('../font/fontello.svg?49304387#fontello') format('svg');
|
||||
}
|
||||
}
|
||||
*/
|
||||
|
||||
[class^="icon-"]:before, [class*=" icon-"]:before {
|
||||
font-family: "fontello";
|
||||
font-style: normal;
|
||||
font-weight: normal;
|
||||
speak: never;
|
||||
|
||||
display: inline-block;
|
||||
text-decoration: inherit;
|
||||
width: 1em;
|
||||
margin-right: .2em;
|
||||
text-align: center;
|
||||
/* opacity: .8; */
|
||||
|
||||
/* For safety - reset parent styles, that can break glyph codes*/
|
||||
font-variant: normal;
|
||||
text-transform: none;
|
||||
|
||||
/* fix buttons height, for twitter bootstrap */
|
||||
line-height: 1em;
|
||||
|
||||
/* Animation center compensation - margins should be symmetric */
|
||||
/* remove if not needed */
|
||||
margin-left: .2em;
|
||||
|
||||
/* you can be more comfortable with increased icons size */
|
||||
/* font-size: 120%; */
|
||||
|
||||
/* Font smoothing. That was taken from TWBS */
|
||||
-webkit-font-smoothing: antialiased;
|
||||
-moz-osx-font-smoothing: grayscale;
|
||||
|
||||
/* Uncomment for 3D effect */
|
||||
/* text-shadow: 1px 1px 1px rgba(127, 127, 127, 0.3); */
|
||||
}
|
||||
|
||||
.icon-plus:before { content: '\e801'; } /* '' */
|
||||
.icon-cancel:before { content: '\e802'; } /* '' */
|
||||
3
Frontend/new_css/main.css
Normal file
3
Frontend/new_css/main.css
Normal file
@@ -0,0 +1,3 @@
|
||||
.container {
|
||||
|
||||
}
|
||||
484
Frontend/new_css/r11form.css
Normal file
484
Frontend/new_css/r11form.css
Normal file
@@ -0,0 +1,484 @@
|
||||
@import url('https://fonts.googleapis.com/css2?family=Nunito:wght@300;400;700&display=swap');
|
||||
@import url('https://necolas.github.io/normalize.css/8.0.1/normalize.css');
|
||||
@import url('fontello.css');
|
||||
|
||||
|
||||
.hyperlink, .hyperlink:visited, .hyperlink:active {
|
||||
color: rgb(47, 125, 146);
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.hyperlink:hover {
|
||||
filter: brightness(120%);
|
||||
}
|
||||
|
||||
.tooltip-window {
|
||||
position: fixed;
|
||||
right: 0;
|
||||
filter: drop-shadow(-2px 0px 2px darkgray);
|
||||
background: #e8f3f7;
|
||||
padding: 15px 30px;
|
||||
font-family: 'Nunito', sans-serif;
|
||||
width: 40%;
|
||||
height: 100%;
|
||||
overflow: scroll;
|
||||
}
|
||||
|
||||
.tooltip-window.lite {
|
||||
width: 30%;
|
||||
}
|
||||
/* .hyperlink.collapseTrigger::before{
|
||||
content: "▼";
|
||||
} */
|
||||
|
||||
.tooltip-window .tip {
|
||||
}
|
||||
|
||||
.bordered-field {
|
||||
border: 2px solid rgba(93, 99, 96, 0.705);
|
||||
border-radius: 5px;
|
||||
padding: 8px;
|
||||
|
||||
}
|
||||
|
||||
.bordered-field:focus {
|
||||
outline: none;
|
||||
box-shadow: 0 0 5px rgba(81, 203, 238);
|
||||
border: 2px solid #00000070;
|
||||
}
|
||||
|
||||
.bordered-field:disabled {
|
||||
background: #eeeeeed2;
|
||||
}
|
||||
|
||||
.vertically-resizeable {
|
||||
resize: vertical;
|
||||
}
|
||||
|
||||
.container {
|
||||
font-family: 'Nunito', sans-serif;
|
||||
display: flex;
|
||||
justify-content: left;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.tool {
|
||||
width: 55%;
|
||||
display: flex;
|
||||
justify-content: space-evenly;
|
||||
}
|
||||
|
||||
.tool.extended {
|
||||
width: 65%;
|
||||
}
|
||||
|
||||
.tool .tool-context {
|
||||
width: 90%;
|
||||
}
|
||||
|
||||
.tool.extended .tool-context {
|
||||
width: 75%;
|
||||
}
|
||||
|
||||
.tool.extended .tool-extention {
|
||||
width: 20%;
|
||||
padding-top: 2%;
|
||||
display: block;
|
||||
}
|
||||
|
||||
.tool .tool-extention {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.tool-extention {
|
||||
opacity: 0;
|
||||
pointer-events: none;
|
||||
}
|
||||
|
||||
.tool-extention.active {
|
||||
opacity: 100%;
|
||||
pointer-events: all;
|
||||
}
|
||||
|
||||
.clickable-text {
|
||||
padding: 0;
|
||||
outline: none;
|
||||
background: none;
|
||||
border: none;
|
||||
font-weight: 300;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.clickable-text.highlight:hover {
|
||||
color: #3bc4f1;
|
||||
}
|
||||
|
||||
.modification-button {
|
||||
padding: 0;
|
||||
outline: none;
|
||||
background: none;
|
||||
border: none;
|
||||
font-weight: 300;
|
||||
}
|
||||
|
||||
.modification-button.btn-add {
|
||||
font-size: 16px;
|
||||
color: #00000030;
|
||||
margin: auto 0 auto 0;
|
||||
}
|
||||
|
||||
.modification-button.btn-add:hover {
|
||||
color:#58ac43;
|
||||
}
|
||||
|
||||
.modification-button.btn-tile:hover {
|
||||
color: #ca1111;
|
||||
}
|
||||
|
||||
.modification-button.btn-hashmap {
|
||||
font-size: 16px;
|
||||
color: #00000030;
|
||||
margin: auto 0 auto 0;
|
||||
}
|
||||
|
||||
.modification-button.btn-hashmap:hover {
|
||||
color: #ca1111;
|
||||
}
|
||||
|
||||
.modification-button.btn-tile {
|
||||
width: 10%;
|
||||
margin: 20% 0 0 0;
|
||||
font-size: 14px;
|
||||
color: #00000020
|
||||
}
|
||||
|
||||
.tile {
|
||||
width: 90%;
|
||||
padding-top: 40%;
|
||||
border: 1px solid gray;
|
||||
border-radius: 3px;
|
||||
position: relative;
|
||||
background: #f0f0f095;
|
||||
margin-bottom: 10px;
|
||||
cursor: default;
|
||||
}
|
||||
|
||||
.tile:hover {
|
||||
filter: brightness(110%);
|
||||
}
|
||||
|
||||
.tile.active {
|
||||
background: #00000070;
|
||||
color: white;
|
||||
filter: none;
|
||||
}
|
||||
|
||||
.tile .content {
|
||||
position: absolute;
|
||||
left: 0;
|
||||
top: 0;
|
||||
bottom: 0;
|
||||
right: 0;
|
||||
padding: 0 2% 0 7%;
|
||||
display: flex;
|
||||
}
|
||||
|
||||
.text-aligned-to-right {
|
||||
text-align: right;
|
||||
}
|
||||
|
||||
.centered-vertically {
|
||||
margin-top: auto;
|
||||
margin-bottom: auto;
|
||||
}
|
||||
|
||||
.display-space-between {
|
||||
width: 100%;
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
}
|
||||
|
||||
.content p {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
|
||||
.float-left {
|
||||
display: flex;
|
||||
justify-content: left;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.version-span {
|
||||
font-size: 13px;
|
||||
font-weight: 400;
|
||||
color: rgba(85,85,85,0.555);
|
||||
}
|
||||
|
||||
.block-display {
|
||||
display: block;
|
||||
}
|
||||
|
||||
.block-label {
|
||||
display: block;
|
||||
margin: 0 0 0 5px;
|
||||
}
|
||||
|
||||
.tabmenu {
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
text-align: center;
|
||||
border-bottom: 1px solid rgba(185, 185, 185, 0.5);
|
||||
}
|
||||
|
||||
.tabitem {
|
||||
flex-grow: 1;
|
||||
cursor: pointer;
|
||||
padding: 5px 0;
|
||||
}
|
||||
|
||||
.tabitem:hover {
|
||||
font-weight: 700;
|
||||
}
|
||||
|
||||
.tabitem.active {
|
||||
background: rgba(33, 34, 34, 0.705);
|
||||
color: white;
|
||||
font-weight: 700;
|
||||
cursor:default;
|
||||
flex-grow: 1;
|
||||
}
|
||||
|
||||
.big-font {
|
||||
font-size: 20px;
|
||||
}
|
||||
|
||||
.action-button.active {
|
||||
background: #3bc4f1;
|
||||
border: 1px solid #7ed0eb;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.action-button.active:hover {
|
||||
filter: brightness(110%);
|
||||
}
|
||||
|
||||
.action-button {
|
||||
background: rgba(155, 165, 160, 0.507);
|
||||
border:1px solid rgba(186, 197, 191, 0.507);
|
||||
color: white;
|
||||
padding: 10px 20px;
|
||||
font-weight: 700;
|
||||
margin: 3px 0;
|
||||
}
|
||||
|
||||
.quater-width {
|
||||
width: 25%;
|
||||
}
|
||||
|
||||
.half-width {
|
||||
width: 50%;
|
||||
}
|
||||
|
||||
.half-width.with-padding {
|
||||
width: 45%;
|
||||
}
|
||||
|
||||
.max-width {
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.max-width.with-padding {
|
||||
width: 94%;
|
||||
}
|
||||
|
||||
.max-height {
|
||||
height: 100%;
|
||||
}
|
||||
|
||||
.height-300 {
|
||||
height: 300px;
|
||||
}
|
||||
|
||||
.max-height.with-padding {
|
||||
height: 90%;
|
||||
}
|
||||
|
||||
.small-margins {
|
||||
margin: 3%;
|
||||
}
|
||||
|
||||
.small-vertical-margin {
|
||||
margin-top: 10px;
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
|
||||
.medium-vertical-margin {
|
||||
margin-top: 30px;
|
||||
margin-bottom: 30px;
|
||||
}
|
||||
|
||||
.large-vertical-margin {
|
||||
margin-top: 50px;
|
||||
margin-bottom: 50px;
|
||||
}
|
||||
|
||||
.textarea-300 {
|
||||
height: 300px;
|
||||
}
|
||||
|
||||
.centered-content {
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
}
|
||||
|
||||
.table-map {
|
||||
width: 60%;
|
||||
}
|
||||
|
||||
.table-map input{
|
||||
font-size: 16px;
|
||||
padding: 7px;
|
||||
border: 1px solid rgba(145, 146, 146, 0.849);
|
||||
border-radius: 5px;
|
||||
}
|
||||
|
||||
.table-map input.key {
|
||||
background: #f0f0f0;
|
||||
}
|
||||
|
||||
.table-default {
|
||||
width: 80%;
|
||||
border-collapse: collapse;
|
||||
border-spacing: 0;
|
||||
}
|
||||
|
||||
.table-default tr {
|
||||
background: #f0f0f02d;
|
||||
}
|
||||
|
||||
.table-default tr.bottom-border {
|
||||
border-bottom: 1px solid black;
|
||||
}
|
||||
|
||||
.table-default th {
|
||||
background: #ffffff;
|
||||
}
|
||||
|
||||
.table-default tr.even {
|
||||
background: #f0f0f0;
|
||||
}
|
||||
|
||||
.tip {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.tip.active {
|
||||
display: block;
|
||||
}
|
||||
|
||||
.tabcontent {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.tabcontent.active {
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
}
|
||||
|
||||
.section-button {
|
||||
width: 100%;
|
||||
padding: 15px 0;
|
||||
font-size: 18px;
|
||||
background: #b4b4b4c5;
|
||||
cursor: pointer;
|
||||
border-bottom: darkgray 2px solid !important;
|
||||
}
|
||||
|
||||
.section-button:hover {
|
||||
/* border-bottom: #3bc4f1 2px solid; */
|
||||
backdrop-filter: brightness(110%);
|
||||
}
|
||||
|
||||
.section-button .active {
|
||||
background: #00000030;
|
||||
}
|
||||
|
||||
.List .collapsibleContent {
|
||||
/* display: none; */
|
||||
border-left: #bdc5c9 2px solid;
|
||||
|
||||
/* max-height: 0px; */
|
||||
/* border-left: #ededed solid 1px; */
|
||||
overflow: hidden;
|
||||
background: #ffffff50;
|
||||
}
|
||||
|
||||
.section{
|
||||
padding: 10px 0px 20px 0px ;
|
||||
}
|
||||
|
||||
.content {
|
||||
padding: 0px 15px 0px 15px ;
|
||||
text-align: justify;
|
||||
overflow: hidden;
|
||||
transition: max-height .2s ease-out;
|
||||
max-height: 0px;
|
||||
border-left: #c0c2c3 2px solid;
|
||||
|
||||
}
|
||||
|
||||
.collapsibleMini::before{
|
||||
content: "►";
|
||||
}
|
||||
|
||||
.collapsibleMini.active::before{
|
||||
content: "▼";
|
||||
}
|
||||
|
||||
.content.active{
|
||||
|
||||
}
|
||||
|
||||
.hiddable {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.hiddable.active {
|
||||
display: inherit;
|
||||
}
|
||||
|
||||
/* In case of collision with classes that use 'active' */
|
||||
.hidden {
|
||||
display: none;
|
||||
}
|
||||
|
||||
button:hover{
|
||||
filter: brightness(110%);
|
||||
}
|
||||
|
||||
.table-doc td, .table-doc th{
|
||||
border-spacing: 0px;
|
||||
padding: 0px 10px;
|
||||
}
|
||||
|
||||
.table-doc td {
|
||||
background-color: rgba(155, 165, 160, 0.342);
|
||||
}
|
||||
|
||||
.table-doc th {
|
||||
background-color: #3bc4f1;
|
||||
text-align: left;
|
||||
color: white;
|
||||
}
|
||||
|
||||
textarea {
|
||||
-webkit-box-sizing: border-box;
|
||||
-moz-box-sizing: border-box;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
code{
|
||||
line-height: 150%;
|
||||
}
|
||||
33
Frontend/sample_data/sample_xml.xml
Normal file
33
Frontend/sample_data/sample_xml.xml
Normal file
@@ -0,0 +1,33 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<l:library xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.release11.com" xmlns:l="http://www.release11.com/library" xmlns:p="http://www.release11.com/person" xmlns:b="http://www.release11.com/book">
|
||||
<l:libraryName>City library</l:libraryName>
|
||||
<l:libraryID>345123</l:libraryID>
|
||||
<l:readerList>
|
||||
<p:person>
|
||||
<p:readerID>7321</p:readerID>
|
||||
<p:name>Adam</p:name>
|
||||
<p:surname>Choke</p:surname>
|
||||
</p:person>
|
||||
<p:person>
|
||||
<p:readerID>5123</p:readerID>
|
||||
<p:name>Lauren</p:name>
|
||||
<p:surname>Wong</p:surname>
|
||||
</p:person>
|
||||
</l:readerList>
|
||||
<l:bookList>
|
||||
<b:book>
|
||||
<b:bookID>6422</b:bookID>
|
||||
<b:title>Harry Potter</b:title>
|
||||
<p:readerID>7542</p:readerID>
|
||||
</b:book>
|
||||
<b:book>
|
||||
<b:bookID>1234</b:bookID>
|
||||
<b:title>Macbeth</b:title>
|
||||
<p:readerID>5123</p:readerID>
|
||||
</b:book>
|
||||
<b:book>
|
||||
<b:bookID>9556</b:bookID>
|
||||
<b:title>Romeo and Juliet</b:title>
|
||||
</b:book>
|
||||
</l:bookList>
|
||||
</l:library>
|
||||
156
Frontend/scripts.js
Normal file
156
Frontend/scripts.js
Normal file
@@ -0,0 +1,156 @@
|
||||
var defaultStrings = [];
|
||||
const color_grey = "#6b6b6b";
|
||||
const color_red = "#ff8f8f";
|
||||
|
||||
//Remove default text and set color to black
|
||||
function clearDefaultContent(element, text) {
|
||||
if (element.value == text) {
|
||||
element.value = "";
|
||||
element.style.color = "#000000";
|
||||
element.style.backgroundColor = "#ffffff";
|
||||
}
|
||||
}
|
||||
|
||||
//Set default text in grey
|
||||
function setDefaultContent(element, text) {
|
||||
if (element.value == "") {
|
||||
var id = element.getAttribute('id');
|
||||
if (!defaultStrings.includes(text)) {
|
||||
defaultStrings.push(text);
|
||||
}
|
||||
if (id == "xmlArea") {
|
||||
element.style.color = color_grey;
|
||||
element.value = text;
|
||||
}
|
||||
if (id == "transformArea") {
|
||||
element.style.color = color_grey;
|
||||
element.value = text;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function hideList(collList) {
|
||||
for (i = 0; i < collList.length; i++) {
|
||||
if (collList[i].nextElementSibling !== null) {
|
||||
collList[i].nextElementSibling.style.maxHeight = null;
|
||||
collList[i].nextElementSibling.classList.toggle("collapsibleDataExpanded", false);
|
||||
}
|
||||
collList[i].style.display = 'none';
|
||||
collList[i].classList.remove("collapsibleActive");
|
||||
}
|
||||
}
|
||||
|
||||
function checkDefault(text){
|
||||
return defaultStrings.includes(text);
|
||||
}
|
||||
|
||||
function showList(collList) {
|
||||
for (i = 0; i < collList.length; i++) {
|
||||
collList[i].style.display = 'block';
|
||||
}
|
||||
}
|
||||
|
||||
function smoothFoldElement(element, toogleState, toggleParrent){
|
||||
if (toogleState) {
|
||||
console.log("DUPA");
|
||||
if(toggleParrent){
|
||||
element.parentElement.style.maxHeight = "0px";
|
||||
}
|
||||
|
||||
element.classList.toggle("active", false);
|
||||
var subLists = collapsibleData.getElementsByClassName("collapsibleData");
|
||||
for (j = 0; j < subLists.length; j++) {
|
||||
subLists[j].style.maxHeight = null;
|
||||
}
|
||||
} else {
|
||||
collapsibleData.parentElement.style.maxHeight = (collapsibleData.parentElement.scrollHeight) + "px";
|
||||
collapsibleData.classList.toggle("active", true);
|
||||
if (collapsibleData.parentElement.classList.contains("collapsibleData") && collapsibleData.parentElement.classList.contains("active")) {
|
||||
collapsibleData.parentElement.style.maxHeight = (collapsibleData.parentElement.scrollHeight + collapsibleData.scrollHeight) + "px";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//Set tooltip info, function is called by onClick handlers
|
||||
function refreshTooltip() {
|
||||
var resizeList = document.getElementsByClassName("collapsibleData");
|
||||
console.log("collDataList: " + resizeList.length)
|
||||
document.getElementById("processorTooltipInfo").innerText = procInfo;
|
||||
document.getElementById("xsltelementsheader").innerText = XSLTheader;
|
||||
}
|
||||
|
||||
function performRequest(text, checkXML, checkTransform){
|
||||
var xmlData = document.getElementById("xmlArea").value.trim();
|
||||
var transformData = document.getElementById("transformArea").value.trim();
|
||||
|
||||
var empty = false;
|
||||
if (defaultStrings.includes(xmlData) && checkXML) {
|
||||
document.getElementById("xmlArea").style.backgroundColor = color_red;
|
||||
xmlData = "";
|
||||
empty = true;
|
||||
}
|
||||
if (defaultStrings.includes(transformData) && checkTransform) {
|
||||
document.getElementById("transformArea").style.backgroundColor = color_red;
|
||||
empty = true;
|
||||
}
|
||||
if (!empty) {
|
||||
restRequest(text);
|
||||
}else{
|
||||
document.getElementById("resultArea").value = "No data provided!";
|
||||
return false;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
//Form REST request, send, receive and display in resultArea
|
||||
async function restRequest(text) {
|
||||
const escapeChar = "specialEscapeChar";
|
||||
// const addr = "http://localhost:8081/" + text;
|
||||
const addr = "http://gordon.zipper.release11.com:8081/" + text;
|
||||
|
||||
var xmlData = document.getElementById("xmlArea").value.trim();
|
||||
var transformData = document.getElementById("transformArea").value.trim();
|
||||
|
||||
if(defaultStrings.includes(xmlData)){
|
||||
xmlData = "<empty/>";
|
||||
}
|
||||
|
||||
// var data = xmlData.concat(escapeChar, transformData);
|
||||
|
||||
// const url = addr.concat("?escapechar=", escapeChar, "&processor=", getProcInfo());
|
||||
|
||||
var jsonData = JSON.stringify({
|
||||
"data" : xmlData,
|
||||
"process" : transformData,
|
||||
"processor" : getProcessor(),
|
||||
"version" : getVersion()
|
||||
});
|
||||
// console.log(jsonData);
|
||||
var init = {
|
||||
headers: new Headers({
|
||||
}),
|
||||
body: jsonData,
|
||||
// body: data,
|
||||
method: "POST"
|
||||
};
|
||||
var request = new Request(addr, init);
|
||||
|
||||
|
||||
|
||||
await fetch(request).then(response => {
|
||||
console.log(response.status);
|
||||
response.text().then(function (text) {
|
||||
console.log(text);
|
||||
var result = JSON.parse(text);
|
||||
document.getElementById("resultArea").value = result.result;
|
||||
document.getElementById("procinfo").innerText = ' Computed using '.concat(" ", result.processor);
|
||||
if (response.ok) {
|
||||
document.getElementById("procinfo").innerText = document.getElementById("procinfo").innerText.concat(" in ", result.time, "ms");
|
||||
procinfo.style.color = "#30aa58";
|
||||
} else {
|
||||
procinfo.style.color = "#aa3030";
|
||||
}
|
||||
});
|
||||
|
||||
});
|
||||
}
|
||||
100
Frontend/styles.css
Normal file
100
Frontend/styles.css
Normal file
@@ -0,0 +1,100 @@
|
||||
html, body {
|
||||
margin: 0px;
|
||||
height: 100%;
|
||||
min-height: 100%;
|
||||
font-family: 'Nunito', sans-serif;
|
||||
}
|
||||
|
||||
select {
|
||||
font-size: 16px;
|
||||
}
|
||||
|
||||
button#requestButton {
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
div#content {
|
||||
width: 100%;
|
||||
min-height: 100%;
|
||||
display: flex;
|
||||
}
|
||||
|
||||
div#fields {
|
||||
float: left;
|
||||
width: 55%;
|
||||
margin-left: 8px;
|
||||
margin-right: 8px;
|
||||
height: 100%;
|
||||
margin-bottom: 60px;
|
||||
}
|
||||
|
||||
p {
|
||||
margin: 1
|
||||
}
|
||||
|
||||
label {
|
||||
font-size: 20px;
|
||||
color: rgb(44, 44, 44);
|
||||
}
|
||||
|
||||
textarea {
|
||||
width: 99.4%;
|
||||
resize: vertical;
|
||||
color: #6b6b6b;
|
||||
}
|
||||
|
||||
textarea#resultArea {
|
||||
width: 99.4%;
|
||||
resize: vertical;
|
||||
}
|
||||
|
||||
span#procinfo {
|
||||
color: #30aa58;
|
||||
}
|
||||
|
||||
p#tooltipText {
|
||||
width: 200px;
|
||||
height: 150px;
|
||||
}
|
||||
|
||||
div#tooltip {
|
||||
margin-top: 160px;
|
||||
float: right;
|
||||
width: 40%;
|
||||
height: 100%;
|
||||
}
|
||||
|
||||
.collapsible {
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.collapsible.active {
|
||||
background-color: rgb(129, 129, 129) !important;
|
||||
}
|
||||
|
||||
.collapsibleData {
|
||||
transition: max-height .2s ease-out;
|
||||
max-height: 0px;
|
||||
}
|
||||
|
||||
.docTable td, .docTable th{
|
||||
border-spacing: 0px;
|
||||
padding: 0px 10px;
|
||||
}
|
||||
|
||||
.docTable td {
|
||||
background-color: rgba(155, 165, 160, 0.342);
|
||||
}
|
||||
|
||||
.docTable th {
|
||||
background-color: #3bc4f1;
|
||||
text-align: left;
|
||||
color: white;
|
||||
}
|
||||
|
||||
.collapsibleDataMini{
|
||||
/* border-radius: 10px; */
|
||||
border: solid rgba(137, 146, 142, 0.267);
|
||||
border-width: 0px 0px 0px 3px;
|
||||
margin-left: 10px;
|
||||
}
|
||||
1094
Frontend/xpath (copy).html
Normal file
1094
Frontend/xpath (copy).html
Normal file
File diff suppressed because it is too large
Load Diff
3208
Frontend/xpath.html
Normal file
3208
Frontend/xpath.html
Normal file
File diff suppressed because it is too large
Load Diff
171
Frontend/xsd.html
Normal file
171
Frontend/xsd.html
Normal file
@@ -0,0 +1,171 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
|
||||
<head>
|
||||
<!-- <link rel="stylesheet" href="styles.css"> -->
|
||||
<link rel="stylesheet" href="new_css/r11form.css">
|
||||
<script src="scripts.js"></script>
|
||||
<meta charset="utf-8" />
|
||||
</head>
|
||||
|
||||
<body onload="init();">
|
||||
<div class="container">
|
||||
<div id="tool" class="tool">
|
||||
<div class="tool-context">
|
||||
<div class="headline">
|
||||
<h1>Online XSD tester <span class="versionInfo"><span class="version-span">v0.4 BETA</span></span>
|
||||
</h1>
|
||||
</div>
|
||||
<label for="processors">Select XSLT processor:</label>
|
||||
<select name="processors" id="processors">
|
||||
<!-- <option value="saxon">Saxon</option> -->
|
||||
<option value="xalan">Xalan</option>
|
||||
</select>
|
||||
<!-- <span id="processorTooltipInfo">procInfo</span><br> -->
|
||||
<br>
|
||||
|
||||
<label for="xmlArea"><b>Insert your XML:</b></label>
|
||||
<textarea id="xmlArea" name="xmlArea" rows="15"
|
||||
class="textarea-300 bordered-field vertically-resizeable max-width"
|
||||
onblur="setDefaultContent(this, 'Insert XML here');"
|
||||
onfocus="clearDefaultContent(this, 'Insert XML here');"></textarea>
|
||||
<br><br>
|
||||
|
||||
<label for="transformArea"><b>Insert your XSD:</b></label>
|
||||
<textarea id="transformArea" name="transformArea" rows="15"
|
||||
class="textarea-300 bordered-field vertically-resizeable max-width"
|
||||
onblur="setDefaultContent(this, 'Insert XSD here');"
|
||||
onfocus="clearDefaultContent(this, 'Insert XSD here');"></textarea>
|
||||
<br>
|
||||
<button id="requestButton" class="max-width block-label action-button active"
|
||||
onclick="performRequest('xsdpost', true, true)">Verify XSD</button>
|
||||
<br><br>
|
||||
|
||||
<label for="resultArea"><b>Result:<span id="procinfo"></span></b></label>
|
||||
<textarea id="resultArea" name="resultArea" rows="2"
|
||||
class="bordered-field vert2ically-resizeable max-width" style="margin-bottom: 50px;"></textarea>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<div class="tooltip-window">
|
||||
<h2>What is XSD?</h2>
|
||||
<p><b>XSD is a W3C recomedation that specifies how to describe the elements in XML document</b></p>
|
||||
<p>XSD specifies data types, order and arity of elements in XML file.<br>
|
||||
Main components of XSD file are:<br>
|
||||
- Element declaration - declares properties of elements (names and namespaces)<br>
|
||||
- Attribute declarations - declares properties of attributes<br>
|
||||
- Simple and complex types:<br>
|
||||
- - XSD provides 19 simple data types<br>
|
||||
- - More complex types are declared using simple types and relationships<br>
|
||||
</p>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<!-- <script>
|
||||
function getVersion() {
|
||||
return document.getElementById("versions").value;
|
||||
}
|
||||
</script> -->
|
||||
<script>
|
||||
function processTooltip() {
|
||||
console.log("processTooltip");
|
||||
|
||||
|
||||
if (getProcInfo() == "xalan") {
|
||||
document.getElementById("tooltipFunctionInfo").innerText = "XSLT 1.0 functions";
|
||||
document.getElementById("processorTooltipInfo").innerText = "Supports XSLT 1.0";
|
||||
hideList(document.getElementsByName("collapse30"));
|
||||
} else {
|
||||
document.getElementById("tooltipFunctionInfo").innerText = "XSLT 1.0, 2.0 & 3.0 functions";
|
||||
document.getElementById("processorTooltipInfo").innerText = "Supports XSLT up to 3.0";
|
||||
showList(document.getElementsByName("collapse30"));
|
||||
}
|
||||
}
|
||||
</script>
|
||||
<script>
|
||||
function getProcessor() {
|
||||
return document.getElementById("processors").value;
|
||||
}
|
||||
</script>
|
||||
<script>
|
||||
function getVersion() {
|
||||
if (getProcInfo() == "xalan") {
|
||||
return "1.0";
|
||||
} else {
|
||||
return "3.0";
|
||||
}
|
||||
}
|
||||
</script>
|
||||
<script>
|
||||
function getProcInfo() {
|
||||
var processVariables = document.getElementById("processors").value;// + "&version=" + document.getElementById("versions").value;
|
||||
return processVariables;
|
||||
}
|
||||
</script>
|
||||
|
||||
<script>
|
||||
var triggerList = document.getElementsByClassName("collapseTrigger");
|
||||
for (i = 0; i < triggerList.length; i++) {
|
||||
console.log("trigger connected");
|
||||
triggerList[i].addEventListener("click", function () {
|
||||
console.log("click");
|
||||
var collapsible = this.parentElement;
|
||||
var collapsibleData = this.nextElementSibling;
|
||||
if (collapsibleData.style.maxHeight > "0px") {
|
||||
collapsibleData.style.maxHeight = "0px";
|
||||
|
||||
this.classList.toggle("active", false);
|
||||
if (!this.classList.contains("collapsibleMini")) {
|
||||
collapsible.classList.toggle("active", false);
|
||||
}
|
||||
|
||||
var subLists1 = collapsibleData.getElementsByClassName("content");
|
||||
var subLists2 = collapsibleData.getElementsByClassName("active");
|
||||
for (j = 0; j < subLists1.length; j++) {
|
||||
subLists1[j].style.maxHeight = "0px";
|
||||
}
|
||||
for (j = 0; j < subLists2.length; j++) {
|
||||
subLists2[j].classList.toggle("active", false);
|
||||
}
|
||||
} else {
|
||||
collapsibleData.style.maxHeight = (collapsibleData.scrollHeight) + "px";
|
||||
|
||||
this.classList.toggle("active", true);
|
||||
if (!this.classList.contains("collapsibleMini")) {
|
||||
collapsible.classList.toggle("active", true);
|
||||
} else {
|
||||
var parentContent = this.closest(".content");
|
||||
parentContent.style.maxHeight = (parentContent.scrollHeight + collapsibleData.scrollHeight) + "px";
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
</script>
|
||||
|
||||
<script>
|
||||
function init() {
|
||||
//Handle clicks in whole form and set info in tooltip
|
||||
setDefaultContent(document.getElementById("xmlArea"), 'Insert XML here');
|
||||
setDefaultContent(document.getElementById("transformArea"), 'Insert XSD here');
|
||||
console.log("init");
|
||||
// refreshTooltip();
|
||||
processTooltip();
|
||||
tool.addEventListener('click', event => {
|
||||
//Check if script was called from textarea or selector
|
||||
var targetID = event.target.getAttribute('id');
|
||||
if (targetID !== "processors" && targetID !== "xmlArea" && targetID !== "transformArea" && targetID !== "versions") {
|
||||
return;
|
||||
}
|
||||
|
||||
processTooltip();
|
||||
// console.log("clock");
|
||||
})
|
||||
}
|
||||
</script>
|
||||
|
||||
</body>
|
||||
|
||||
</html>
|
||||
540
Frontend/xslt (copy).html
Normal file
540
Frontend/xslt (copy).html
Normal file
@@ -0,0 +1,540 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
|
||||
<head>
|
||||
<!-- <link rel="stylesheet" href="styles.css"> -->
|
||||
<link rel="stylesheet" href="new_css/r11form.css">
|
||||
<script src="scripts.js"></script>
|
||||
</head>
|
||||
|
||||
<body onload="init();">
|
||||
<div class="container">
|
||||
<div id="tool" class="tool">
|
||||
<div class="tool-context">
|
||||
<div class="headline">
|
||||
<h1>Online XSLT tester <span class="versionInfo"><span class="version-span">v0.4</span></span></h1>
|
||||
</div>
|
||||
<label for="processors">Select XSLT processor:</label>
|
||||
<select name="processors" id="processors">
|
||||
<option value="saxon">Saxon</option>
|
||||
<option value="xalan">Xalan</option>
|
||||
</select>
|
||||
<span id="processorTooltipInfo">procInfo</span><br>
|
||||
<br>
|
||||
|
||||
<label for="xmlArea"><b>Insert your XML:</b></label>
|
||||
<textarea id="xmlArea" name="xmlArea" rows="15"
|
||||
class="textarea-300 bordered-field vertically-resizeable max-width"
|
||||
onblur="setDefaultContent(this, 'Insert XML here');"
|
||||
onfocus="clearDefaultContent(this, 'Insert XML here');"></textarea>
|
||||
<br><br>
|
||||
|
||||
<label for="transformArea"><b>Insert your XSLT:</b></label>
|
||||
<textarea id="transformArea" name="transformArea" rows="15"
|
||||
class="textarea-300 bordered-field vertically-resizeable max-width"
|
||||
onblur="setDefaultContent(this, 'Insert XSLT here');"
|
||||
onfocus="clearDefaultContent(this, 'Insert XSLT here');"></textarea>
|
||||
<br>
|
||||
<button id="requestButton" class="max-width block-label action-button active"
|
||||
onclick="performRequest('xsltpost', true, true)">Execute XSLT transform</button>
|
||||
<br><br>
|
||||
|
||||
<label for="resultArea"><b>Transform result:<span id="procinfo"></span></b></label>
|
||||
<textarea id="resultArea" name="resultArea" rows="10"
|
||||
class="textarea-300 bordered-field vertically-resizeable max-width"></textarea>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<div class="tooltip tooltip-window">
|
||||
<h2>What is XSLT?</h2>
|
||||
<p>XSLT is a language for transforming XML documents into other documents such as XML, HTML and many
|
||||
other.<br></p>
|
||||
<span id="collapsible-lists">
|
||||
<div class="collapsible">
|
||||
<button class="section-button collapseTrigger" style="border: none" style="border: none">XSLT 1.0 vs
|
||||
2.0
|
||||
vs 3.0</button>
|
||||
<div class="content">
|
||||
<p><b>XSLT 2.0 introduced a host of new features:</b><br>
|
||||
- Strong typing and all XSD types<br>
|
||||
- The ability to define and write own functions<br>
|
||||
- node-set() - replaces XSLT's 1.0 Result Tree Fragment, creating fully functional tree<br>
|
||||
- New functions and operators:<br>
|
||||
- - XPath 2.0<br>
|
||||
- - String processing and regular expressions<br>
|
||||
- - Grouping (for-each-group function)
|
||||
- - String processing<br>
|
||||
- - Sequence type<br>
|
||||
</p>
|
||||
<p><b>XSLT 3.0 further improved the formula:</b><br>
|
||||
- Streaming tranformations (previously file had to be loaded to memory to be processed)<br>
|
||||
- Packages - improve the modularity of large stylesheets<br>
|
||||
- Improved error handling (for example <code><xsl:try></code>)<br>
|
||||
- Support for maps and arrays, enabling XSLT to handle JSON as well as XML<br>
|
||||
- Functions can now be arguments to other (higher-order) functions
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<h2><span id="tooltipFunctionInfo">XSLT 1.0, 2.0 & 3.0 functions</span></h2>
|
||||
<div class="collapsible">
|
||||
<button class="section-button collapseTrigger" style="border: none">Templates</button>
|
||||
<div class="content">
|
||||
|
||||
[v1.0] <a href="https://www.w3.org/TR/xslt-10/#section-Defining-Template-Rules"
|
||||
target="_blank"><code><xsl:template></code></a> - defines a set of rules to be
|
||||
applied to
|
||||
specified node.<br>
|
||||
[v1.0] <a href="https://www.w3.org/TR/xslt-10/#section-Applying-Template-Rules"
|
||||
target="_blank"><code><xsl:apply-templates></code></a> - applies a template rule to
|
||||
the
|
||||
current element or to element's child nodes.<br>
|
||||
[v1.0] <a href="https://www.w3.org/TR/xslt-10/#apply-imports"
|
||||
target="_blank"><code><xsl:apply-imports></code></a> - Applies a template rule from
|
||||
an
|
||||
imported style sheet<br>
|
||||
[v1.0] <a href="https://www.w3.org/TR/xslt-10/#section-Applying-Template-Rules"
|
||||
target="_blank"><code><xsl:apply-templates></code></a> - Applies a template rule to
|
||||
the
|
||||
current element or to the current element's child nodes<br>
|
||||
[v1.0] <a href="https://www.w3.org/TR/xslt-10/#named-templates"
|
||||
target="_blank"><code><xsl:call-template></code></a> - Calls a named template
|
||||
<span name="collapse2">[v2.0] <a href="https://www.w3.org/TR/xslt20/#element-next-match"
|
||||
target="_blank"><code><xsl:next-match></code></a> - overrides another template
|
||||
rule
|
||||
(considers all other template rules of lower import precedence/priority)<br></span>
|
||||
<span name="collapse2">[v3.0] <a href="http://www.w3.org/TR/xslt-30/#element-mode"
|
||||
target="_blank"><code><xsl:mode></code></a> - Allows properties of a mode to be
|
||||
defined<br></span>
|
||||
<span name="collapse2">[v3.0] <a href="http://www.w3.org/TR/xslt-30/#element-override"
|
||||
target="_blank"><code><xsl:override></code></a> - Allows using package to
|
||||
override
|
||||
selected components from a used package<br></span>
|
||||
<span name="collapse2">[v3.0] <a href="http://www.w3.org/TR/xslt-30/#element-package"
|
||||
target="_blank"><code><xsl:package></code></a> - Defines a set of stylesheet
|
||||
modules
|
||||
that can be compiled as a unit<br></span>
|
||||
<span name="collapse2">[v3.0] <a href="https://www.w3.org/TR/xslt-30/#element-accept"
|
||||
target="_blank"><code><xsl:accept></code></a> - Allows a package to restrict the
|
||||
visibility of components exposed by a package<br></span>
|
||||
<span name="collapse2">[v3.0] <a
|
||||
href="http://www.w3.org/TR/xslt-30/#element-global-context-item"
|
||||
target="_blank"><code><xsl:global-context-item></code></a> - Declares whether a
|
||||
global context item is required, and if so, to declare its required type</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="collapsible">
|
||||
<button class="section-button collapseTrigger" style="border: none">Repetition and Conditional
|
||||
processing</button>
|
||||
<div class="content">
|
||||
[v1.0] <a href="https://www.w3.org/TR/xslt-10/#for-each"
|
||||
target="_blank"><code><xsl:for-each></code></a> - Loops through each node in a
|
||||
specified
|
||||
node set<br>
|
||||
[v1.0] <a href="https://www.w3.org/TR/xslt-10/#section-Conditional-Processing"
|
||||
target="_blank"><code><xsl:if></code></a> - Contains a template that will be applied
|
||||
only if a specified condition is true<br>
|
||||
[v1.0] <a href="https://www.w3.org/TR/xslt-10/#section-Conditional-Processing-with-xsl:choose"
|
||||
target="_blank"><code><xsl:choose></code></a> - Used in conjunction with <when>
|
||||
and
|
||||
<otherwise> to express multiple conditional tests<br>
|
||||
[v1.0] <a href="https://www.w3.org/TR/xslt-10/#section-Conditional-Processing-with-xsl:choose"
|
||||
target="_blank"><code><xsl:when></code></a> - Specifies an action for the
|
||||
<choose> element<br>
|
||||
[v1.0] <a href="https://www.w3.org/TR/xslt-10/#section-Conditional-Processing-with-xsl:choose"
|
||||
target="_blank"><code><xsl:otherwise></code></a> - Specifies a default
|
||||
action for the <choose> element<br>
|
||||
<span name="collapse2">[v2.0] <a href="https://www.w3.org/TR/xslt20/#element-for-each-group"
|
||||
target="_blank"><code><xsl:for-each-group></code></a> - Groups
|
||||
elements and performs operations once for each group<br></span>
|
||||
<span name="collapse2">[v3.0] <a href="http://www.w3.org/TR/xslt-30/#element-iterate"
|
||||
target="_blank"><code><xsl:iterate></code></a> - Used to iterate
|
||||
over a sequence, with the option to set parameters for use in the next
|
||||
iteration<br></span>
|
||||
<span name="collapse2">[v3.0] <a href="http://www.w3.org/TR/xslt-30/#element-break"
|
||||
target="_blank"><code><xsl:break></code></a> - Causes premature
|
||||
completion before the entire input sequence has been processed<br></span>
|
||||
<span name="collapse2">[v3.0] <a href="http://www.w3.org/TR/xslt-30/#element-next-iteration"
|
||||
target="_blank"><code><xsl:next-iteration></code></a> - The
|
||||
contents
|
||||
are a set of xsl:with-param elements defining the values of the iteration
|
||||
parameters to be used on the next iteration<br></span>
|
||||
<span name="collapse2">[v3.0] <a href="http://www.w3.org/TR/xslt-30/#element-on-completion"
|
||||
target="_blank"><code><xsl:on-completion></code></a> - Defines
|
||||
processing to be carried out when the input sequence is exhausted<br></span>
|
||||
<span name="collapse2">[v3.0] <a href="http://www.w3.org/TR/xslt-30/#element-fork"
|
||||
target="_blank"><code><xsl:fork></code></a> - The result of the
|
||||
xsl:fork instruction is the sequence formed by concatenating the results of
|
||||
evaluating each of its contained instructions, in order<br></span>
|
||||
<span name="collapse2">[v3.0] <a href="http://www.w3.org/TR/xslt-30/#element-on-empty"
|
||||
target="_blank"><code><xsl:on-empty></code></a> - Outputs the
|
||||
enclosed content only if the containing sequence generates no "ordinary"
|
||||
content<br></span>
|
||||
<span name="collapse2">[v3.0] <a href="http://www.w3.org/TR/xslt-30/#element-on-non-empty"
|
||||
target="_blank"><code><xsl:on-non-empty></code></a> - Outputs the
|
||||
enclosed content only if the containing sequence also generates "ordinary"
|
||||
content<br></span>
|
||||
<span name="collapse2">[v3.0] <a href="http://www.w3.org/TR/xslt-30/#element-try"
|
||||
target="_blank"><code><xsl:try></code></a> - Allows recovery from
|
||||
dynamic errors occurring within the expression it wraps<br></span>
|
||||
<span name="collapse2">[v3.0] <a href="http://www.w3.org/TR/xslt-30/#element-catch"
|
||||
target="_blank"><code><xsl:catch></code></a> - In conjunction
|
||||
with
|
||||
xsl:try, handles dynamic errors<br></span>
|
||||
<span name="collapse2">[v3.0] <a href="http://www.w3.org/TR/xslt-30/#element-context-item"
|
||||
target="_blank"><code><xsl:context-item></code></a> - Used to
|
||||
declare
|
||||
the initial context item for a template<br></span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="collapsible">
|
||||
<button class="section-button collapseTrigger" style="border: none">Creating result tree</button>
|
||||
<div class="content">
|
||||
[v1.0] <a href="https://www.w3.org/TR/xslt-10/#creating-attributes"
|
||||
target="_blank"><code><xsl:attribute></code></a> - Adds an attribute<br>
|
||||
[v1.0] <a href="https://www.w3.org/TR/xslt-10/#attribute-sets"
|
||||
target="_blank"><code><xsl:attribute-set></code></a> - Defines a named set of
|
||||
attributes<br>
|
||||
[v1.0] <a href="https://www.w3.org/TR/xslt-10/#copying"
|
||||
target="_blank"><code><xsl:copy></code></a> - Creates a copy of the current node
|
||||
(without
|
||||
child nodes and attributes)<br>
|
||||
[v1.0] <a href="https://www.w3.org/TR/xslt-10/#number"
|
||||
target="_blank"><code><xsl:number></code></a> - Determines the integer position of
|
||||
the
|
||||
current node and formats a number<br>
|
||||
[v1.0] <a href="https://www.w3.org/TR/xslt-10/#value-of"
|
||||
target="_blank"><code><xsl:value-of></code></a> - Extracts the value of a selected
|
||||
node<br>
|
||||
[v1.0] <a href="https://www.w3.org/TR/xslt-10/#section-Creating-Text"
|
||||
target="_blank"><code><xsl:text></code></a> - Writes literal text to the output<br>
|
||||
[v1.0] <a href="https://www.w3.org/TR/xslt-10/#section-Creating-Comments"
|
||||
target="_blank"><code><xsl:comment></code></a> - Creates a comment node in the result
|
||||
tree<br>
|
||||
[v1.0] <a href="https://www.w3.org/TR/xslt-10/#section-Creating-Processing-Instructions"
|
||||
target="_blank"><code><xsl:processing-instruction></code></a> - Writes a processing
|
||||
instruction to the output<br>
|
||||
[v1.0] <a href="https://www.w3.org/TR/xslt-10/#key"
|
||||
target="_blank"><code><xsl:key></code></a> -
|
||||
Declares a named key that can be used in the
|
||||
style sheet with the key() function<br>
|
||||
[v1.0] <a href="https://www.w3.org/TR/xslt-10/#format-number"
|
||||
target="_blank"><code><xsl:decimal-format></code></a> - Defines the characters and
|
||||
symbols to be used when converting numbers into strings, with the format-number() function<br>
|
||||
[v1.0] <a href="https://www.w3.org/TR/xslt-10/#strip"
|
||||
target="_blank"><code><xsl:preserve-space></code></a> - Defines the elements for
|
||||
which
|
||||
white space should be preserved<br>
|
||||
[v1.0] <a href="https://www.w3.org/TR/xslt-10/#strip"
|
||||
target="_blank"><code><xsl:strip-space></code></a> - Defines the elements for which
|
||||
white
|
||||
space should be removed<br>
|
||||
[v1.0] <a href="https://www.w3.org/TR/xslt-10/#sorting"
|
||||
target="_blank"><code><xsl:sort></code></a> - Sorts the output<br>
|
||||
[v1.0] <a href="https://www.w3.org/TR/xslt-10/#output"
|
||||
target="_blank"><code><xsl:output></code></a> - Defines the format of the output
|
||||
document<br>
|
||||
<span name="collapse2">[v2.0] <a href="https://www.w3.org/TR/xslt20/#element-perform-sort"
|
||||
target="_blank"><code><xsl:for-each-group></code></a> - Sorts given
|
||||
sequence<br></span>
|
||||
<span name="collapse2">[v2.0] <a href="https://www.w3.org/TR/xslt20/#element-result-document"
|
||||
target="_blank"><code><xsl:result-document></code></a> - Creates a final result
|
||||
tree<br></span>
|
||||
<span name="collapse2">[v2.0] <a href="https://www.w3.org/TR/xslt20/#element-character-map"
|
||||
target="_blank"><code><xsl:character-map></code></a> - Allows a specific
|
||||
character
|
||||
appearing in the final result tree to be substituted by a specified string of
|
||||
characters<br></span>
|
||||
<span name="collapse2">[v2.0] <a href="https://www.w3.org/TR/xslt20/#element-character-map"
|
||||
target="_blank"><code><xsl:output-character></code></a> - Defines characters and
|
||||
their replacements to be used by character-map<br></span>
|
||||
<span name="collapse2">[v3.0] <a href="http://www.w3.org/TR/xslt-30/#element-merge"
|
||||
target="_blank"><code><xsl:merge></code></a> - Merges two or more pre-sorted
|
||||
input
|
||||
files<br></span>
|
||||
<span name="collapse2">[v3.0] <a href="http://www.w3.org/TR/xslt-30/#element-merge-action"
|
||||
target="_blank"><code><xsl:merge-action></code></a> - Defines action to be
|
||||
carried
|
||||
out on each merged group<br></span>
|
||||
<span name="collapse2">[v3.0] <a href="http://www.w3.org/TR/xslt-30/#element-merge-key"
|
||||
target="_blank"><code><xsl:merge-key></code></a> - Used to define the merge keys
|
||||
on
|
||||
which the input sequences are sorted<br></span>
|
||||
<span name="collapse2">[v3.0] <a href="http://www.w3.org/TR/xslt-30/#element-merge-source"
|
||||
target="_blank"><code><xsl:merge-source></code></a> - Describes the input source
|
||||
for
|
||||
an xsl:merge instruction<br></span>
|
||||
<!-- <span name="collapse2">[v3.0] <a href=" " target="_blank"><code>< ></code></a> - <br></span>
|
||||
<span name="collapse2">[v3.0] <a href=" " target="_blank"><code>< ></code></a> - <br></span>
|
||||
<span name="collapse2">[v3.0] <a href=" " target="_blank"><code>< ></code></a> - <br></span> -->
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<div class="collapsible">
|
||||
<button class="section-button collapseTrigger" style="border: none">Stylesheet structure</button>
|
||||
<div class="content">
|
||||
[v1.0] <a href="https://www.w3.org/TR/xslt-10/#stylesheet-element"
|
||||
target="_blank"><code><xsl:stylesheet></code></a> - Defines the root element of a
|
||||
style
|
||||
sheet<br>
|
||||
[v1.0] <a href="https://www.w3.org/TR/xslt-10/#stylesheet-element"
|
||||
target="_blank"><code><xsl:transform></code></a> - Defines the root element of a
|
||||
style
|
||||
sheet<br>
|
||||
[v1.0] <a href="https://www.w3.org/TR/xslt-10/#import"
|
||||
target="_blank"><code><xsl:import></code></a> - Imports the contents of one style
|
||||
sheet
|
||||
into another. Note: An imported style sheet has lower precedence than the importing style
|
||||
sheet<br>
|
||||
[v1.0] <a href="https://www.w3.org/TR/xslt-10/#include"
|
||||
target="_blank"><code><xsl:include></code></a> - Includes the contents of one style
|
||||
sheet
|
||||
into another. Note: An included style sheet has the same precedence as the including style
|
||||
sheet<br>
|
||||
[v1.0] <a href="https://www.w3.org/TR/xslt-10/#literal-result-element"
|
||||
target="_blank"><code><xsl:namespace-alias></code></a> - Replaces a namespace in the
|
||||
style sheet to a different namespace in the output<br>
|
||||
[v1.0] <a href="https://www.w3.org/TR/xslt-10/#section-Creating-Elements-with-xsl:element"
|
||||
target="_blank"><code><xsl:element></code></a> - Creates an element node in the
|
||||
output
|
||||
document<br>
|
||||
</div>
|
||||
</div>
|
||||
<div class="collapsible">
|
||||
<button class="section-button collapseTrigger" style="border: none">Variables and
|
||||
Parameters</button>
|
||||
<div class="content">
|
||||
[v1.0] <a href="https://www.w3.org/TR/xslt-10/#variables"
|
||||
target="_blank"><code><xsl:param></code></a> - Declares a local or global
|
||||
parameter<br>
|
||||
[v1.0] <a href="https://www.w3.org/TR/xslt-10/#variables"
|
||||
target="_blank"><code><xsl:variable></code></a> - Declares a local or global
|
||||
variable<br>
|
||||
[v1.0] <a href="https://www.w3.org/TR/xslt-10/#section-Passing-Parameters-to-Templates"
|
||||
target="_blank"><code><xsl:with-param></code></a> - Defines the value of a parameter
|
||||
to
|
||||
be passed into a template<br>
|
||||
[v1.0] <a href="https://www.w3.org/TR/xslt-10/#copy-of"
|
||||
target="_blank"><code><xsl:copy-of></code></a> - Creates a copy of the current node
|
||||
(with
|
||||
child nodes and attributes)<br>
|
||||
<span name="collapse2">[v2.0] <a href="https://www.w3.org/TR/xslt20/#element-document"
|
||||
target="_blank"><code><xsl:document></code></a> - Creates a new document
|
||||
node<br></span>
|
||||
<span name="collapse2">[v2.0] <a href="https://www.w3.org/TR/xslt20/#element-namespace"
|
||||
target="_blank"><code><xsl:namespace></code></a> - Creates a namespace
|
||||
node<br></span>
|
||||
<span name="collapse2">[v2.0] <a href="https://www.w3.org/TR/xslt20/#element-namespace-alias"
|
||||
target="_blank"><code><xsl:namespace-alias></code></a> - Declares that a literal
|
||||
namespace URI is being used as an alias for a target namespace URI<br></span>
|
||||
<span name="collapse2">[v2.0] <a href="https://www.w3.org/TR/xslt20/#element-sequence"
|
||||
target="_blank"><code><xsl:sequence></code></a> - Constructs a sequence of nodes
|
||||
and/or atomic values<br></span>
|
||||
</div>
|
||||
</div>
|
||||
<span name="collapse30">
|
||||
<div class="collapsible">
|
||||
<button class="section-button collapseTrigger" style="border: none" name="collapse2">[v2.0]
|
||||
Regular
|
||||
Expressions</button>
|
||||
<div class="content" name="collapse2data">
|
||||
[v2.0] <a href="https://www.w3.org/TR/xslt20/#element-analyze-string"
|
||||
target="_blank"><code><xsl:analyze-string></code></a> - Identifies substrings
|
||||
that
|
||||
match
|
||||
given regex<br>
|
||||
[v2.0] <a href="https://www.w3.org/TR/xslt20/#element-analyze-string"
|
||||
target="_blank"><code><xsl:matching-substring></code></a> - Used in conjunction
|
||||
with
|
||||
analize-string, returns matching substrings<br>
|
||||
[v2.0] <a href="https://www.w3.org/TR/xslt20/#element-analyze-string"
|
||||
target="_blank"><code><xsl:non-matching-substring></code></a> - Used in
|
||||
conjunction
|
||||
with
|
||||
analize-string, returns substrings that didn't match the regex
|
||||
</div>
|
||||
</div>
|
||||
</span>
|
||||
<span name="collapse30">
|
||||
<div class="collapsible">
|
||||
<button class="section-button collapseTrigger" style="border: none" name="collapse2">[v2.0 -
|
||||
3.0]
|
||||
Callable</button>
|
||||
<div class="content" name="collapse2data">
|
||||
<span name="collapse2">[v2.0] <a href="https://www.w3.org/TR/xslt20/#element-function"
|
||||
target="_blank"><code><xsl:function></code></a> - Declares a function that
|
||||
can be
|
||||
called from any XPath expression in the stylesheet<br></span>
|
||||
<span name="collapse2">[v3.0] <a href="http://www.w3.org/TR/xslt-30/#element-evaluate"
|
||||
target="_blank"><code><xsl:evaluate></code></a> - Allows dynamic evaluation
|
||||
of
|
||||
XPath
|
||||
expressions from a string<br></span>
|
||||
<span name="collapse2">[v3.0] <a href="http://www.w3.org/TR/xslt-30/#element-assert"
|
||||
target="_blank"><code><xsl:assert></code></a> - Asserts a XPath expression,
|
||||
optionally throwing a dynamic error<br></span>
|
||||
<!-- <span name="collapse2">[v3.0] <a href=" " target="_blank"><code>< ></code></a> - <br></span> -->
|
||||
</div>
|
||||
</div>
|
||||
</span>
|
||||
<div class="collapsible">
|
||||
<button class="section-button collapseTrigger" style="border: none" style="border: none">Other
|
||||
elements</button>
|
||||
<div class="content">
|
||||
[v1.0] <a href="https://www.w3.org/TR/xslt-10/#message"
|
||||
target="_blank"><code><xsl:message></code></a> - Writes a message to the output (used
|
||||
to
|
||||
report errors)<br>
|
||||
[v1.0] <a href="https://www.w3.org/TR/xslt-10/#fallback"
|
||||
target="_blank"><code><xsl:fallback></code></a> - Specifies an alternate code to run
|
||||
if
|
||||
the processor does not support an XSLT element<br>
|
||||
<span name="collapse2">[v3.0] <a href="http://www.w3.org/TR/xslt-30/#element-map"
|
||||
target="_blank"><code><xsl:map></code></a> - Used to construct a new
|
||||
map<br></span>
|
||||
<span name="collapse2">[v3.0] <a href="http://www.w3.org/TR/xslt-30/#element-map-entry"
|
||||
target="_blank"><code><xsl:map-entry></code></a> - Used to construct a singleton
|
||||
map
|
||||
(one key and one value)<br></span>
|
||||
|
||||
<span name="collapse2">[v3.0] <a href="http://www.w3.org/TR/xslt-30/#element-expose"
|
||||
target="_blank"><code><xsl:expose></code></a> - Used to modify the visibility of
|
||||
selected components within a package<br></span>
|
||||
<span name="collapse2">[v3.0] <a href="http://www.w3.org/TR/xslt-30/#element-accumulator"
|
||||
target="_blank"><code><xsl:accumulator></code></a> - Defines a rule that is to be
|
||||
applied while the document is being sequentially processed<br></span>
|
||||
<span name="collapse2">[v3.0] <a href="http://www.w3.org/TR/xslt-30/#element-accumulator-rule"
|
||||
target="_blank"><code><xsl:accumulator-rule></code></a> - Defines a rule for an
|
||||
xsl:accumulator<br></span>
|
||||
<span name="collapse2"><b>Streaming: (not usable on this website!)</b></span>
|
||||
<span name="collapse2">[v3.0] <a href="http://www.w3.org/TR/xslt-30/#element-source-document"
|
||||
target="_blank"><code><xsl:source-document></code></a> - Initiates streamed or
|
||||
unstreamed processing of a source document<br></span>
|
||||
<span name="collapse2">[v3.0] <a href="http://www.w3.org/TR/xslt-30/#element-use-package"
|
||||
target="_blank"><code><xsl:use-package></code></a> - <br></span>
|
||||
<span name="collapse2">[v3.0] <a href="http://www.w3.org/TR/xslt-30/#element-where-populated"
|
||||
target="_blank"><code><xsl:where-populated></code></a> - Allows conditional
|
||||
content
|
||||
construction to be made streamable<br></span>
|
||||
<span name="collapse2"><b>Packages: (not usable on this website!)</b></span>
|
||||
<span name="collapse2">[v3.0] <a href="https://www.w3.org/TR/xslt-30/#element-accept"
|
||||
target="_blank"><code><xsl:accept></code></a> - Allows a package to restrict the
|
||||
visibility of components exposed by a package that it uses<br></span>
|
||||
<!-- <span name="collapse2">[v3.0] <a href=" " target="_blank"><code>< ></code></a> - <br></span> -->
|
||||
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</span>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<!-- <script>
|
||||
function getVersion() {
|
||||
return document.getElementById("versions").value;
|
||||
}
|
||||
</script> -->
|
||||
<script>
|
||||
function processTooltip() {
|
||||
console.log("processTooltip");
|
||||
|
||||
|
||||
if (getProcInfo() == "xalan") {
|
||||
document.getElementById("tooltipFunctionInfo").innerText = "XSLT 1.0 functions";
|
||||
document.getElementById("processorTooltipInfo").innerText = "Supports XSLT 1.0";
|
||||
hideList(document.getElementsByName("collapse30"));
|
||||
} else {
|
||||
document.getElementById("tooltipFunctionInfo").innerText = "XSLT 1.0, 2.0 & 3.0 functions";
|
||||
document.getElementById("processorTooltipInfo").innerText = "Supports XSLT up to 3.0";
|
||||
showList(document.getElementsByName("collapse30"));
|
||||
}
|
||||
}
|
||||
</script>
|
||||
<script>
|
||||
function getProcessor() {
|
||||
return document.getElementById("processors").value;
|
||||
}
|
||||
</script>
|
||||
<script>
|
||||
function getVersion() {
|
||||
if (getProcInfo() == "xalan") {
|
||||
return "1.0";
|
||||
} else {
|
||||
return "3.0";
|
||||
}
|
||||
}
|
||||
</script>
|
||||
<script>
|
||||
function getProcInfo() {
|
||||
var processVariables = document.getElementById("processors").value;// + "&version=" + document.getElementById("versions").value;
|
||||
return processVariables;
|
||||
}
|
||||
</script>
|
||||
|
||||
<script>
|
||||
var triggerList = document.getElementsByClassName("collapseTrigger");
|
||||
for (i = 0; i < triggerList.length; i++) {
|
||||
console.log("trigger connected");
|
||||
triggerList[i].addEventListener("click", function () {
|
||||
console.log("click");
|
||||
var collapsible = this.parentElement;
|
||||
var collapsibleData = this.nextElementSibling;
|
||||
if (collapsibleData.style.maxHeight > "0px") {
|
||||
collapsibleData.style.maxHeight = "0px";
|
||||
|
||||
this.classList.toggle("active", false);
|
||||
if (!this.classList.contains("collapsibleMini")) {
|
||||
collapsible.classList.toggle("active", false);
|
||||
}
|
||||
|
||||
var subLists1 = collapsibleData.getElementsByClassName("content");
|
||||
var subLists2 = collapsibleData.getElementsByClassName("active");
|
||||
for (j = 0; j < subLists1.length; j++) {
|
||||
subLists1[j].style.maxHeight = "0px";
|
||||
}
|
||||
for (j = 0; j < subLists2.length; j++) {
|
||||
subLists2[j].classList.toggle("active", false);
|
||||
}
|
||||
} else {
|
||||
collapsibleData.style.maxHeight = (collapsibleData.scrollHeight) + "px";
|
||||
|
||||
this.classList.toggle("active", true);
|
||||
if (!this.classList.contains("collapsibleMini")) {
|
||||
collapsible.classList.toggle("active", true);
|
||||
} else {
|
||||
var parentContent = this.closest(".content");
|
||||
parentContent.style.maxHeight = (parentContent.scrollHeight + collapsibleData.scrollHeight) + "px";
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
</script>
|
||||
|
||||
<script>
|
||||
function init() {
|
||||
//Handle clicks in whole form and set info in tooltip
|
||||
setDefaultContent(document.getElementById("xmlArea"), 'Insert XML here');
|
||||
setDefaultContent(document.getElementById("transformArea"), 'Insert XSLT here');
|
||||
console.log("init");
|
||||
// refreshTooltip();
|
||||
processTooltip();
|
||||
tool.addEventListener('click', event => {
|
||||
//Check if script was called from textarea or selector
|
||||
var targetID = event.target.getAttribute('id');
|
||||
if (targetID !== "processors" && targetID !== "xmlArea" && targetID !== "transformArea" && targetID !== "versions") {
|
||||
return;
|
||||
}
|
||||
|
||||
processTooltip();
|
||||
// console.log("clock");
|
||||
})
|
||||
}
|
||||
</script>
|
||||
|
||||
</body>
|
||||
|
||||
</html>
|
||||
1227
Frontend/xslt.html
Normal file
1227
Frontend/xslt.html
Normal file
File diff suppressed because it is too large
Load Diff
11
Jenkinsfile
vendored
Normal file
11
Jenkinsfile
vendored
Normal file
@@ -0,0 +1,11 @@
|
||||
node('master'){
|
||||
stage('git pull'){
|
||||
git credentialsId: '7724c11a-2509-4aa3-9862-106aa354c5b8', url: 'ssh://_git@phabricator.release11.com/diffusion/CZOPW/czopw.git'
|
||||
}
|
||||
stage('build & deploy'){
|
||||
sh 'docker-compose --context gordon up --force-recreate --build -d'
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
49
REST_XSLT/.classpath
Normal file
49
REST_XSLT/.classpath
Normal file
@@ -0,0 +1,49 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<classpath>
|
||||
<classpathentry kind="src" output="target/classes" path="src/main/java">
|
||||
<attributes>
|
||||
<attribute name="optional" value="true"/>
|
||||
<attribute name="maven.pomderived" value="true"/>
|
||||
</attributes>
|
||||
</classpathentry>
|
||||
<classpathentry excluding="**" kind="src" output="target/classes" path="src/main/resources">
|
||||
<attributes>
|
||||
<attribute name="maven.pomderived" value="true"/>
|
||||
</attributes>
|
||||
</classpathentry>
|
||||
<classpathentry kind="src" output="target/test-classes" path="src/test/java">
|
||||
<attributes>
|
||||
<attribute name="optional" value="true"/>
|
||||
<attribute name="maven.pomderived" value="true"/>
|
||||
<attribute name="test" value="true"/>
|
||||
</attributes>
|
||||
</classpathentry>
|
||||
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8">
|
||||
<attributes>
|
||||
<attribute name="maven.pomderived" value="true"/>
|
||||
</attributes>
|
||||
</classpathentry>
|
||||
<classpathentry kind="con" path="org.eclipse.m2e.MAVEN2_CLASSPATH_CONTAINER">
|
||||
<attributes>
|
||||
<attribute name="maven.pomderived" value="true"/>
|
||||
</attributes>
|
||||
</classpathentry>
|
||||
<classpathentry kind="src" path="target/generated-sources/annotations">
|
||||
<attributes>
|
||||
<attribute name="optional" value="true"/>
|
||||
<attribute name="maven.pomderived" value="true"/>
|
||||
<attribute name="ignore_optional_problems" value="true"/>
|
||||
<attribute name="m2e-apt" value="true"/>
|
||||
</attributes>
|
||||
</classpathentry>
|
||||
<classpathentry kind="src" output="target/test-classes" path="target/generated-test-sources/test-annotations">
|
||||
<attributes>
|
||||
<attribute name="optional" value="true"/>
|
||||
<attribute name="maven.pomderived" value="true"/>
|
||||
<attribute name="ignore_optional_problems" value="true"/>
|
||||
<attribute name="m2e-apt" value="true"/>
|
||||
<attribute name="test" value="true"/>
|
||||
</attributes>
|
||||
</classpathentry>
|
||||
<classpathentry kind="output" path="target/classes"/>
|
||||
</classpath>
|
||||
3
REST_XSLT/.idea/.gitignore
generated
vendored
Normal file
3
REST_XSLT/.idea/.gitignore
generated
vendored
Normal file
@@ -0,0 +1,3 @@
|
||||
# Default ignored files
|
||||
/shelf/
|
||||
/workspace.xml
|
||||
2
REST_XSLT/.idea/REST_XSLT.iml
generated
Normal file
2
REST_XSLT/.idea/REST_XSLT.iml
generated
Normal file
@@ -0,0 +1,2 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<module type="JAVA_MODULE" version="4" />
|
||||
14
REST_XSLT/.idea/compiler.xml
generated
Normal file
14
REST_XSLT/.idea/compiler.xml
generated
Normal file
@@ -0,0 +1,14 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="CompilerConfiguration">
|
||||
<annotationProcessing>
|
||||
<profile name="Maven default annotation processors profile" enabled="true">
|
||||
<sourceOutputDir name="target/generated-sources/annotations" />
|
||||
<sourceTestOutputDir name="target/generated-test-sources/test-annotations" />
|
||||
<outputRelativeToContentRoot value="true" />
|
||||
<module name="RestTMP" />
|
||||
<module name="REST_XSLT" />
|
||||
</profile>
|
||||
</annotationProcessing>
|
||||
</component>
|
||||
</project>
|
||||
7
REST_XSLT/.idea/encodings.xml
generated
Normal file
7
REST_XSLT/.idea/encodings.xml
generated
Normal file
@@ -0,0 +1,7 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="Encoding">
|
||||
<file url="file://$PROJECT_DIR$/src/main/java" charset="UTF-8" />
|
||||
<file url="file://$PROJECT_DIR$/src/main/resources" charset="UTF-8" />
|
||||
</component>
|
||||
</project>
|
||||
20
REST_XSLT/.idea/jarRepositories.xml
generated
Normal file
20
REST_XSLT/.idea/jarRepositories.xml
generated
Normal file
@@ -0,0 +1,20 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="RemoteRepositoriesConfiguration">
|
||||
<remote-repository>
|
||||
<option name="id" value="central" />
|
||||
<option name="name" value="Central Repository" />
|
||||
<option name="url" value="https://repo.maven.apache.org/maven2" />
|
||||
</remote-repository>
|
||||
<remote-repository>
|
||||
<option name="id" value="central" />
|
||||
<option name="name" value="Maven Central repository" />
|
||||
<option name="url" value="https://repo1.maven.org/maven2" />
|
||||
</remote-repository>
|
||||
<remote-repository>
|
||||
<option name="id" value="jboss.community" />
|
||||
<option name="name" value="JBoss Community repository" />
|
||||
<option name="url" value="https://repository.jboss.org/nexus/content/repositories/public/" />
|
||||
</remote-repository>
|
||||
</component>
|
||||
</project>
|
||||
14
REST_XSLT/.idea/misc.xml
generated
Normal file
14
REST_XSLT/.idea/misc.xml
generated
Normal file
@@ -0,0 +1,14 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="ExternalStorageConfigurationManager" enabled="true" />
|
||||
<component name="MavenProjectsManager">
|
||||
<option name="originalFiles">
|
||||
<list>
|
||||
<option value="$PROJECT_DIR$/pom.xml" />
|
||||
</list>
|
||||
</option>
|
||||
</component>
|
||||
<component name="ProjectRootManager" version="2" languageLevel="JDK_11" project-jdk-name="11" project-jdk-type="JavaSDK">
|
||||
<output url="file://$PROJECT_DIR$/out" />
|
||||
</component>
|
||||
</project>
|
||||
124
REST_XSLT/.idea/uiDesigner.xml
generated
Normal file
124
REST_XSLT/.idea/uiDesigner.xml
generated
Normal file
@@ -0,0 +1,124 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="Palette2">
|
||||
<group name="Swing">
|
||||
<item class="com.intellij.uiDesigner.HSpacer" tooltip-text="Horizontal Spacer" icon="/com/intellij/uiDesigner/icons/hspacer.png" removable="false" auto-create-binding="false" can-attach-label="false">
|
||||
<default-constraints vsize-policy="1" hsize-policy="6" anchor="0" fill="1" />
|
||||
</item>
|
||||
<item class="com.intellij.uiDesigner.VSpacer" tooltip-text="Vertical Spacer" icon="/com/intellij/uiDesigner/icons/vspacer.png" removable="false" auto-create-binding="false" can-attach-label="false">
|
||||
<default-constraints vsize-policy="6" hsize-policy="1" anchor="0" fill="2" />
|
||||
</item>
|
||||
<item class="javax.swing.JPanel" icon="/com/intellij/uiDesigner/icons/panel.png" removable="false" auto-create-binding="false" can-attach-label="false">
|
||||
<default-constraints vsize-policy="3" hsize-policy="3" anchor="0" fill="3" />
|
||||
</item>
|
||||
<item class="javax.swing.JScrollPane" icon="/com/intellij/uiDesigner/icons/scrollPane.png" removable="false" auto-create-binding="false" can-attach-label="true">
|
||||
<default-constraints vsize-policy="7" hsize-policy="7" anchor="0" fill="3" />
|
||||
</item>
|
||||
<item class="javax.swing.JButton" icon="/com/intellij/uiDesigner/icons/button.png" removable="false" auto-create-binding="true" can-attach-label="false">
|
||||
<default-constraints vsize-policy="0" hsize-policy="3" anchor="0" fill="1" />
|
||||
<initial-values>
|
||||
<property name="text" value="Button" />
|
||||
</initial-values>
|
||||
</item>
|
||||
<item class="javax.swing.JRadioButton" icon="/com/intellij/uiDesigner/icons/radioButton.png" removable="false" auto-create-binding="true" can-attach-label="false">
|
||||
<default-constraints vsize-policy="0" hsize-policy="3" anchor="8" fill="0" />
|
||||
<initial-values>
|
||||
<property name="text" value="RadioButton" />
|
||||
</initial-values>
|
||||
</item>
|
||||
<item class="javax.swing.JCheckBox" icon="/com/intellij/uiDesigner/icons/checkBox.png" removable="false" auto-create-binding="true" can-attach-label="false">
|
||||
<default-constraints vsize-policy="0" hsize-policy="3" anchor="8" fill="0" />
|
||||
<initial-values>
|
||||
<property name="text" value="CheckBox" />
|
||||
</initial-values>
|
||||
</item>
|
||||
<item class="javax.swing.JLabel" icon="/com/intellij/uiDesigner/icons/label.png" removable="false" auto-create-binding="false" can-attach-label="false">
|
||||
<default-constraints vsize-policy="0" hsize-policy="0" anchor="8" fill="0" />
|
||||
<initial-values>
|
||||
<property name="text" value="Label" />
|
||||
</initial-values>
|
||||
</item>
|
||||
<item class="javax.swing.JTextField" icon="/com/intellij/uiDesigner/icons/textField.png" removable="false" auto-create-binding="true" can-attach-label="true">
|
||||
<default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1">
|
||||
<preferred-size width="150" height="-1" />
|
||||
</default-constraints>
|
||||
</item>
|
||||
<item class="javax.swing.JPasswordField" icon="/com/intellij/uiDesigner/icons/passwordField.png" removable="false" auto-create-binding="true" can-attach-label="true">
|
||||
<default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1">
|
||||
<preferred-size width="150" height="-1" />
|
||||
</default-constraints>
|
||||
</item>
|
||||
<item class="javax.swing.JFormattedTextField" icon="/com/intellij/uiDesigner/icons/formattedTextField.png" removable="false" auto-create-binding="true" can-attach-label="true">
|
||||
<default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1">
|
||||
<preferred-size width="150" height="-1" />
|
||||
</default-constraints>
|
||||
</item>
|
||||
<item class="javax.swing.JTextArea" icon="/com/intellij/uiDesigner/icons/textArea.png" removable="false" auto-create-binding="true" can-attach-label="true">
|
||||
<default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
|
||||
<preferred-size width="150" height="50" />
|
||||
</default-constraints>
|
||||
</item>
|
||||
<item class="javax.swing.JTextPane" icon="/com/intellij/uiDesigner/icons/textPane.png" removable="false" auto-create-binding="true" can-attach-label="true">
|
||||
<default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
|
||||
<preferred-size width="150" height="50" />
|
||||
</default-constraints>
|
||||
</item>
|
||||
<item class="javax.swing.JEditorPane" icon="/com/intellij/uiDesigner/icons/editorPane.png" removable="false" auto-create-binding="true" can-attach-label="true">
|
||||
<default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
|
||||
<preferred-size width="150" height="50" />
|
||||
</default-constraints>
|
||||
</item>
|
||||
<item class="javax.swing.JComboBox" icon="/com/intellij/uiDesigner/icons/comboBox.png" removable="false" auto-create-binding="true" can-attach-label="true">
|
||||
<default-constraints vsize-policy="0" hsize-policy="2" anchor="8" fill="1" />
|
||||
</item>
|
||||
<item class="javax.swing.JTable" icon="/com/intellij/uiDesigner/icons/table.png" removable="false" auto-create-binding="true" can-attach-label="false">
|
||||
<default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
|
||||
<preferred-size width="150" height="50" />
|
||||
</default-constraints>
|
||||
</item>
|
||||
<item class="javax.swing.JList" icon="/com/intellij/uiDesigner/icons/list.png" removable="false" auto-create-binding="true" can-attach-label="false">
|
||||
<default-constraints vsize-policy="6" hsize-policy="2" anchor="0" fill="3">
|
||||
<preferred-size width="150" height="50" />
|
||||
</default-constraints>
|
||||
</item>
|
||||
<item class="javax.swing.JTree" icon="/com/intellij/uiDesigner/icons/tree.png" removable="false" auto-create-binding="true" can-attach-label="false">
|
||||
<default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3">
|
||||
<preferred-size width="150" height="50" />
|
||||
</default-constraints>
|
||||
</item>
|
||||
<item class="javax.swing.JTabbedPane" icon="/com/intellij/uiDesigner/icons/tabbedPane.png" removable="false" auto-create-binding="true" can-attach-label="false">
|
||||
<default-constraints vsize-policy="3" hsize-policy="3" anchor="0" fill="3">
|
||||
<preferred-size width="200" height="200" />
|
||||
</default-constraints>
|
||||
</item>
|
||||
<item class="javax.swing.JSplitPane" icon="/com/intellij/uiDesigner/icons/splitPane.png" removable="false" auto-create-binding="false" can-attach-label="false">
|
||||
<default-constraints vsize-policy="3" hsize-policy="3" anchor="0" fill="3">
|
||||
<preferred-size width="200" height="200" />
|
||||
</default-constraints>
|
||||
</item>
|
||||
<item class="javax.swing.JSpinner" icon="/com/intellij/uiDesigner/icons/spinner.png" removable="false" auto-create-binding="true" can-attach-label="true">
|
||||
<default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1" />
|
||||
</item>
|
||||
<item class="javax.swing.JSlider" icon="/com/intellij/uiDesigner/icons/slider.png" removable="false" auto-create-binding="true" can-attach-label="false">
|
||||
<default-constraints vsize-policy="0" hsize-policy="6" anchor="8" fill="1" />
|
||||
</item>
|
||||
<item class="javax.swing.JSeparator" icon="/com/intellij/uiDesigner/icons/separator.png" removable="false" auto-create-binding="false" can-attach-label="false">
|
||||
<default-constraints vsize-policy="6" hsize-policy="6" anchor="0" fill="3" />
|
||||
</item>
|
||||
<item class="javax.swing.JProgressBar" icon="/com/intellij/uiDesigner/icons/progressbar.png" removable="false" auto-create-binding="true" can-attach-label="false">
|
||||
<default-constraints vsize-policy="0" hsize-policy="6" anchor="0" fill="1" />
|
||||
</item>
|
||||
<item class="javax.swing.JToolBar" icon="/com/intellij/uiDesigner/icons/toolbar.png" removable="false" auto-create-binding="false" can-attach-label="false">
|
||||
<default-constraints vsize-policy="0" hsize-policy="6" anchor="0" fill="1">
|
||||
<preferred-size width="-1" height="20" />
|
||||
</default-constraints>
|
||||
</item>
|
||||
<item class="javax.swing.JToolBar$Separator" icon="/com/intellij/uiDesigner/icons/toolbarSeparator.png" removable="false" auto-create-binding="false" can-attach-label="false">
|
||||
<default-constraints vsize-policy="0" hsize-policy="0" anchor="0" fill="1" />
|
||||
</item>
|
||||
<item class="javax.swing.JScrollBar" icon="/com/intellij/uiDesigner/icons/scrollbar.png" removable="false" auto-create-binding="true" can-attach-label="false">
|
||||
<default-constraints vsize-policy="6" hsize-policy="0" anchor="0" fill="2" />
|
||||
</item>
|
||||
</group>
|
||||
</component>
|
||||
</project>
|
||||
6
REST_XSLT/.idea/vcs.xml
generated
Normal file
6
REST_XSLT/.idea/vcs.xml
generated
Normal file
@@ -0,0 +1,6 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="VcsDirectoryMappings">
|
||||
<mapping directory="$PROJECT_DIR$/../.." vcs="Git" />
|
||||
</component>
|
||||
</project>
|
||||
34
REST_XSLT/.project
Normal file
34
REST_XSLT/.project
Normal file
@@ -0,0 +1,34 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<projectDescription>
|
||||
<name>REST_XSLT</name>
|
||||
<comment></comment>
|
||||
<projects>
|
||||
</projects>
|
||||
<buildSpec>
|
||||
<buildCommand>
|
||||
<name>org.eclipse.jdt.core.javabuilder</name>
|
||||
<arguments>
|
||||
</arguments>
|
||||
</buildCommand>
|
||||
<buildCommand>
|
||||
<name>org.eclipse.m2e.core.maven2Builder</name>
|
||||
<arguments>
|
||||
</arguments>
|
||||
</buildCommand>
|
||||
</buildSpec>
|
||||
<natures>
|
||||
<nature>org.eclipse.jdt.core.javanature</nature>
|
||||
<nature>org.eclipse.m2e.core.maven2Nature</nature>
|
||||
</natures>
|
||||
<filteredResources>
|
||||
<filter>
|
||||
<id>1614706323594</id>
|
||||
<name></name>
|
||||
<type>30</type>
|
||||
<matcher>
|
||||
<id>org.eclipse.core.resources.regexFilterMatcher</id>
|
||||
<arguments>node_modules|.git|__CREATED_BY_JAVA_LANGUAGE_SERVER__</arguments>
|
||||
</matcher>
|
||||
</filter>
|
||||
</filteredResources>
|
||||
</projectDescription>
|
||||
5
REST_XSLT/.settings/org.eclipse.core.resources.prefs
Normal file
5
REST_XSLT/.settings/org.eclipse.core.resources.prefs
Normal file
@@ -0,0 +1,5 @@
|
||||
eclipse.preferences.version=1
|
||||
encoding//src/main/java=UTF-8
|
||||
encoding//src/main/resources=UTF-8
|
||||
encoding//src/test/java=UTF-8
|
||||
encoding/<project>=UTF-8
|
||||
2
REST_XSLT/.settings/org.eclipse.jdt.apt.core.prefs
Normal file
2
REST_XSLT/.settings/org.eclipse.jdt.apt.core.prefs
Normal file
@@ -0,0 +1,2 @@
|
||||
eclipse.preferences.version=1
|
||||
org.eclipse.jdt.apt.aptEnabled=false
|
||||
9
REST_XSLT/.settings/org.eclipse.jdt.core.prefs
Normal file
9
REST_XSLT/.settings/org.eclipse.jdt.core.prefs
Normal file
@@ -0,0 +1,9 @@
|
||||
eclipse.preferences.version=1
|
||||
org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
|
||||
org.eclipse.jdt.core.compiler.compliance=1.8
|
||||
org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
|
||||
org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning
|
||||
org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=ignore
|
||||
org.eclipse.jdt.core.compiler.processAnnotations=disabled
|
||||
org.eclipse.jdt.core.compiler.release=disabled
|
||||
org.eclipse.jdt.core.compiler.source=1.8
|
||||
4
REST_XSLT/.settings/org.eclipse.m2e.core.prefs
Normal file
4
REST_XSLT/.settings/org.eclipse.m2e.core.prefs
Normal file
@@ -0,0 +1,4 @@
|
||||
activeProfiles=
|
||||
eclipse.preferences.version=1
|
||||
resolveWorkspaceProjects=true
|
||||
version=1
|
||||
21
REST_XSLT/Dockerfile
Normal file
21
REST_XSLT/Dockerfile
Normal file
@@ -0,0 +1,21 @@
|
||||
# Using maven image, based on java 8
|
||||
FROM maven:3.6.3-jdk-8 as target
|
||||
WORKDIR /build
|
||||
COPY pom.xml .
|
||||
COPY src/ /build/src/
|
||||
RUN mvn -ntp package
|
||||
|
||||
# Go to working directory in docker image
|
||||
# WORKDIR /usr/app/
|
||||
|
||||
FROM openjdk:slim-buster
|
||||
COPY --from=target /build/target/*jar-with-dependencies.jar /app/REST_XSLT.jar
|
||||
|
||||
# Download dependencies during image build
|
||||
# (RUN - works on image creation)
|
||||
# (CMD - works on container start)
|
||||
# RUN mvn dependency:resolve
|
||||
# RUN mvn dependency:go-offline
|
||||
|
||||
# On container creation - run maven tests
|
||||
CMD exec java -jar /app/REST_XSLT.jar
|
||||
2
REST_XSLT/RestTMP.iml
Normal file
2
REST_XSLT/RestTMP.iml
Normal file
@@ -0,0 +1,2 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<module type="JAVA_MODULE" version="4" />
|
||||
134
REST_XSLT/pom.xml
Normal file
134
REST_XSLT/pom.xml
Normal file
@@ -0,0 +1,134 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project xmlns="http://maven.apache.org/POM/4.0.0"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
|
||||
<groupId>r11.mltx</groupId>
|
||||
<artifactId>REST_XSLT</artifactId>
|
||||
<version>1.0-SNAPSHOT</version>
|
||||
|
||||
<properties>
|
||||
<maven.compiler.source>11</maven.compiler.source>
|
||||
<maven.compiler.target>11</maven.compiler.target>
|
||||
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
||||
</properties>
|
||||
|
||||
<build>
|
||||
<plugins>
|
||||
<!-- <plugin>-->
|
||||
<!-- <artifactId>maven-jar-plugin</artifactId>-->
|
||||
<!-- <version>3.1.0</version>-->
|
||||
<!-- <configuration>-->
|
||||
<!-- <archive>-->
|
||||
<!-- <manifest>-->
|
||||
<!-- <addClasspath>true</addClasspath>-->
|
||||
<!-- <classpathPrefix>lib/</classpathPrefix>-->
|
||||
<!-- <mainClass>Main</mainClass>-->
|
||||
<!-- </manifest>-->
|
||||
<!-- </archive>-->
|
||||
<!-- </configuration>-->
|
||||
<!-- </plugin>-->
|
||||
|
||||
<plugin>
|
||||
<artifactId>maven-compiler-plugin</artifactId>
|
||||
<version>3.8.1</version>
|
||||
<configuration>
|
||||
<source>1.8</source>
|
||||
<target>1.8</target>
|
||||
</configuration>
|
||||
</plugin>
|
||||
|
||||
<plugin>
|
||||
<artifactId>maven-assembly-plugin</artifactId>
|
||||
<version>3.3.0</version>
|
||||
|
||||
<configuration>
|
||||
<archive>
|
||||
<manifest>
|
||||
<addClasspath>true</addClasspath>
|
||||
<classpathPrefix>lib/</classpathPrefix>
|
||||
<mainClass>Main</mainClass>
|
||||
</manifest>
|
||||
</archive>
|
||||
<descriptorRefs>
|
||||
<descriptorRef>jar-with-dependencies</descriptorRef>
|
||||
</descriptorRefs>
|
||||
</configuration>
|
||||
|
||||
<executions>
|
||||
<execution>
|
||||
<id>make-assembly</id>
|
||||
<phase>package</phase>
|
||||
<goals>
|
||||
<goal>single</goal>
|
||||
</goals>
|
||||
</execution>
|
||||
</executions>
|
||||
|
||||
</plugin>
|
||||
</plugins>
|
||||
|
||||
</build>
|
||||
|
||||
<dependencies>
|
||||
<dependency>
|
||||
<groupId>com.fasterxml.jackson.core</groupId>
|
||||
<artifactId>jackson-core</artifactId>
|
||||
<version>2.11.0</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.fasterxml.jackson.core</groupId>
|
||||
<artifactId>jackson-databind</artifactId>
|
||||
<version>2.11.0</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.sparkjava</groupId>
|
||||
<artifactId>spark-core</artifactId>
|
||||
<version>2.9.3</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.slf4j</groupId>
|
||||
<artifactId>slf4j-simple</artifactId>
|
||||
<version>1.6.2</version>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
<!-- XSLT -->
|
||||
<dependency>
|
||||
<groupId>net.sf.saxon</groupId>
|
||||
<artifactId>Saxon-HE</artifactId>
|
||||
<version>10.3</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>xalan</groupId>
|
||||
<artifactId>xalan</artifactId>
|
||||
<version>2.7.2</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>org.slf4j</groupId>
|
||||
<artifactId>jcl-over-slf4j</artifactId>
|
||||
<version>1.7.0</version>
|
||||
<scope>runtime</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.slf4j</groupId>
|
||||
<artifactId>slf4j-api</artifactId>
|
||||
<version>1.7.0</version>
|
||||
<scope>runtime</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.slf4j</groupId>
|
||||
<artifactId>slf4j-log4j12</artifactId>
|
||||
<version>1.7.0</version>
|
||||
<scope>runtime</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>log4j</groupId>
|
||||
<artifactId>log4j</artifactId>
|
||||
<version>1.2.14</version>
|
||||
</dependency>
|
||||
<!-- JSON -->
|
||||
</dependencies>
|
||||
|
||||
</project>
|
||||
220
REST_XSLT/src/main/java/Main.java
Normal file
220
REST_XSLT/src/main/java/Main.java
Normal file
@@ -0,0 +1,220 @@
|
||||
import com.fasterxml.jackson.databind.JsonMappingException;
|
||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||
import processors.Saxon;
|
||||
import processors.Xalan;
|
||||
import spark.*;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
public class Main {
|
||||
public static void main(String[] args) {
|
||||
Spark.port(8081);
|
||||
|
||||
Spark.after((Filter) (request, response) -> {
|
||||
response.header("Access-Control-Allow-Origin", "*");
|
||||
response.header("access-control-allow-headers", "*");
|
||||
response.header("access-control-expose-headers", "*");
|
||||
response.header("Access-Control-Allow-Methods", "POST");
|
||||
});
|
||||
|
||||
Spark.post("/xsltpost", xsltHandler);
|
||||
Spark.post("/xpathpost", xpathHandler);
|
||||
Spark.post("/xsdpost", xsdHandler);
|
||||
Spark.get("/procinfo", procinfoHandler);
|
||||
System.out.println("Server is online");
|
||||
}
|
||||
|
||||
static Route procinfoHandler = (Request req, Response resp) -> {
|
||||
try {
|
||||
// req.session().id
|
||||
resp.header("processor", "Saxon " + Saxon.getVersion() + " over s9api");
|
||||
return Saxon.getVersion();
|
||||
} catch (Exception ex) {
|
||||
return ex.getMessage();
|
||||
}
|
||||
};
|
||||
|
||||
static Route xsdHandler = (Request req, Response resp) -> {
|
||||
String body = req.body();
|
||||
System.out.println("Request: " + body);
|
||||
ObjectMapper mapper = new ObjectMapper();
|
||||
Map<String, String> requestMap = null;
|
||||
Map<String, String> responseMap = new HashMap<>();
|
||||
try {
|
||||
requestMap = mapper.readValue(body, Map.class);
|
||||
} catch (JsonMappingException ex) {
|
||||
ex.printStackTrace();
|
||||
}
|
||||
|
||||
String data = requestMap.get("data");
|
||||
String xsd = requestMap.get("process");
|
||||
String processor = requestMap.get("processor");
|
||||
String version = requestMap.get("version");
|
||||
|
||||
resp.header("processor", Xalan.getVersion());
|
||||
long timeStart = System.currentTimeMillis();
|
||||
String tmp = "";
|
||||
try {
|
||||
tmp = Xalan.validate(data, xsd).trim();
|
||||
responseMap.put("result", tmp);
|
||||
responseMap.put("status", "OK");
|
||||
} catch (Exception ex) {
|
||||
System.out.println("Exception: "+ex.getMessage());
|
||||
responseMap.put("result", ex.getMessage());
|
||||
responseMap.put("status", "ERR");
|
||||
resp.status(400);
|
||||
}
|
||||
long duration = System.currentTimeMillis() - timeStart;
|
||||
responseMap.put("processor", Xalan.getVersion());
|
||||
responseMap.put("time", "" + duration);
|
||||
resp.body(mapper.writeValueAsString(responseMap));
|
||||
return resp;
|
||||
};
|
||||
|
||||
static Route xpathHandler = (Request req, Response resp) -> {
|
||||
|
||||
String body = req.body();
|
||||
System.out.println("Request: " + body);
|
||||
ObjectMapper mapper = new ObjectMapper();
|
||||
Map<String, String> requestMap = null;
|
||||
Map<String, String> responseMap = new HashMap<>();
|
||||
try {
|
||||
requestMap = mapper.readValue(body, Map.class);
|
||||
} catch (JsonMappingException ex) {
|
||||
ex.printStackTrace();
|
||||
}
|
||||
|
||||
String data = requestMap.get("data");
|
||||
String query = requestMap.get("process");
|
||||
String processor = requestMap.get("processor");
|
||||
String version = requestMap.get("version");
|
||||
|
||||
String tmp = "";
|
||||
long timeStart = 0;
|
||||
long duration = 0;
|
||||
|
||||
if (processor == null) {
|
||||
return "saxon, xalan";
|
||||
}
|
||||
try {
|
||||
switch (processor) {
|
||||
case "saxon":
|
||||
resp.header("processor", "Saxon " + Saxon.getVersion() + " " + version + " over s9api");
|
||||
System.out.print("Processing start...");
|
||||
timeStart = System.currentTimeMillis();
|
||||
try {
|
||||
tmp = Saxon.processXPath(data, query, version).trim();
|
||||
responseMap.put("result", tmp);
|
||||
responseMap.put("status", "OK");
|
||||
} catch (Exception ex) {
|
||||
responseMap.put("result", ex.getMessage());
|
||||
responseMap.put("status", "ERR");
|
||||
resp.status(400);
|
||||
}
|
||||
duration = System.currentTimeMillis() - timeStart;
|
||||
System.out.println("end(" + duration + ")");
|
||||
responseMap.put("processor", "Saxon " + Saxon.getVersion() + " " + version + " over s9api");
|
||||
responseMap.put("time", "" + duration);
|
||||
resp.body(mapper.writeValueAsString(responseMap));
|
||||
return resp;
|
||||
|
||||
case "xalan":
|
||||
resp.header("processor", Xalan.getVersion());
|
||||
timeStart = System.currentTimeMillis();
|
||||
try {
|
||||
tmp = Xalan.processXPath(data, query).trim();
|
||||
responseMap.put("result", tmp);
|
||||
responseMap.put("status", "OK");
|
||||
} catch (Exception ex) {
|
||||
responseMap.put("result", ex.getMessage());
|
||||
responseMap.put("status", "ERR");
|
||||
resp.status(400);
|
||||
}
|
||||
duration = System.currentTimeMillis() - timeStart;
|
||||
responseMap.put("processor", Xalan.getVersion());
|
||||
responseMap.put("result", tmp);
|
||||
responseMap.put("time", "" + duration);
|
||||
resp.body(mapper.writeValueAsString(responseMap));
|
||||
return resp;
|
||||
|
||||
default:
|
||||
return "saxon, xalan";
|
||||
}
|
||||
|
||||
} catch (Exception ex) {
|
||||
ex.printStackTrace();
|
||||
return ex.getMessage();
|
||||
}
|
||||
};
|
||||
|
||||
static Route xsltHandler = (Request req, Response resp) -> {
|
||||
String body = req.body();
|
||||
ObjectMapper mapper = new ObjectMapper();
|
||||
Map<String, String> jsonMap = null;
|
||||
Map<String, String> responseMap = new HashMap<>();
|
||||
try {
|
||||
jsonMap = mapper.readValue(body, Map.class);
|
||||
System.out.println(jsonMap);
|
||||
} catch (JsonMappingException ex) {
|
||||
ex.printStackTrace();
|
||||
}
|
||||
String data = jsonMap.get("data");
|
||||
String query = jsonMap.get("process");
|
||||
String processor = jsonMap.get("processor");
|
||||
String version = jsonMap.get("version");
|
||||
|
||||
if (processor == null) {
|
||||
return "saxon, xalan";
|
||||
}
|
||||
try {
|
||||
String tmp = "";
|
||||
long timeStart = 0;
|
||||
long duration = 0;
|
||||
switch (processor) {
|
||||
case "saxon":
|
||||
// resp.header("processor", "Saxon " + Saxon.getVersion());
|
||||
timeStart = System.currentTimeMillis();
|
||||
try {
|
||||
tmp = Saxon.processXSLT(data, query);
|
||||
responseMap.put("result", tmp);
|
||||
responseMap.put("status", "OK");
|
||||
} catch (Exception ex) {
|
||||
responseMap.put("result", ex.getMessage());
|
||||
responseMap.put("status", "ERR");
|
||||
resp.status(400);
|
||||
}
|
||||
|
||||
|
||||
duration = System.currentTimeMillis() - timeStart;
|
||||
responseMap.put("processor", "Saxon " + Saxon.getVersion() + " " + version);
|
||||
responseMap.put("time", "" + duration);
|
||||
resp.body(mapper.writeValueAsString(responseMap));
|
||||
return resp;
|
||||
|
||||
case "xalan":
|
||||
timeStart = System.currentTimeMillis();
|
||||
try {
|
||||
tmp = Xalan.processXSLT(data, query);
|
||||
responseMap.put("result", tmp);
|
||||
responseMap.put("status", "OK");
|
||||
} catch (Exception ex) {
|
||||
responseMap.put("result", ex.getMessage());
|
||||
responseMap.put("status", "ERR");
|
||||
resp.status(400);
|
||||
}
|
||||
duration = System.currentTimeMillis() - timeStart;
|
||||
responseMap.put("processor", Xalan.getVersion());
|
||||
responseMap.put("time", "" + duration);
|
||||
resp.body(mapper.writeValueAsString(responseMap));
|
||||
return resp;
|
||||
|
||||
default:
|
||||
return "saxon, xalan";
|
||||
}
|
||||
} catch (Exception ex) {
|
||||
return ex.getMessage();
|
||||
}
|
||||
|
||||
};
|
||||
}
|
||||
54
REST_XSLT/src/main/java/processors/NewNamespaceResolver.java
Normal file
54
REST_XSLT/src/main/java/processors/NewNamespaceResolver.java
Normal file
@@ -0,0 +1,54 @@
|
||||
package processors;
|
||||
|
||||
import net.sf.saxon.om.NamespaceBinding;
|
||||
import net.sf.saxon.om.NamespaceMap;
|
||||
import net.sf.saxon.s9api.XPathCompiler;
|
||||
import net.sf.saxon.s9api.XdmNode;
|
||||
|
||||
import java.util.Iterator;
|
||||
|
||||
public class NewNamespaceResolver {
|
||||
|
||||
private NamespaceMap namespaceMap;
|
||||
|
||||
public NamespaceMap process(XdmNode doc) {
|
||||
namespaceMap = NamespaceMap.emptyMap();
|
||||
Iterator<XdmNode> it = doc.children().iterator();
|
||||
|
||||
while (it.hasNext()) {
|
||||
XdmNode tmp = it.next();
|
||||
extractNamespace(tmp);
|
||||
}
|
||||
return namespaceMap;
|
||||
}
|
||||
|
||||
public void exportNamespaces(XPathCompiler compiler){
|
||||
Iterator<NamespaceBinding> it = namespaceMap.iterator();
|
||||
while(it.hasNext()){
|
||||
System.out.println(it.next());
|
||||
}
|
||||
namespaceMap.forEach(namespaceBinding -> compiler.declareNamespace(namespaceBinding.getPrefix(), namespaceBinding.getURI()));
|
||||
}
|
||||
|
||||
private void extractNamespace(XdmNode node) {
|
||||
NamespaceMap tmp;
|
||||
if ((tmp = node.getUnderlyingNode().getAllNamespaces()) != null) {
|
||||
namespaceMap = namespaceMap.putAll(tmp);
|
||||
}
|
||||
if (node.children().iterator().hasNext()) {
|
||||
|
||||
Iterator<XdmNode> it = node.children().iterator();
|
||||
while (it.hasNext()) {
|
||||
XdmNode rNode = it.next();
|
||||
if(rNode.getUnderlyingNode().getPrefix().isEmpty() && !rNode.getParent().getUnderlyingNode().getPrefix().isEmpty()){
|
||||
|
||||
System.out.println("prefix missing, parent has "+rNode.getParent().getUnderlyingNode().getPrefix() + ", but child has none");
|
||||
|
||||
NamespaceMap nsTMP= rNode.getUnderlyingNode().getAllNamespaces();
|
||||
System.out.println();
|
||||
}
|
||||
extractNamespace(rNode);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
53
REST_XSLT/src/main/java/processors/Saxon.java
Normal file
53
REST_XSLT/src/main/java/processors/Saxon.java
Normal file
@@ -0,0 +1,53 @@
|
||||
package processors;
|
||||
|
||||
import net.sf.saxon.om.NamespaceMap;
|
||||
import net.sf.saxon.s9api.*;
|
||||
import javax.xml.transform.stream.StreamSource;
|
||||
import java.io.StringReader;
|
||||
import java.io.StringWriter;
|
||||
|
||||
public class Saxon {
|
||||
public static String processXSLT(String data, String transform) throws SaxonApiException {
|
||||
Processor processor = new Processor(false);
|
||||
XsltCompiler compiler = processor.newXsltCompiler();
|
||||
XsltExecutable stylesheet = compiler.compile(new StreamSource(new StringReader(transform)));
|
||||
StringWriter sw = new StringWriter();
|
||||
Serializer out = processor.newSerializer(sw);
|
||||
out.setOutputProperty(Serializer.Property.METHOD, "xml");
|
||||
out.setOutputProperty(Serializer.Property.INDENT, "yes");
|
||||
|
||||
Xslt30Transformer transformer = stylesheet.load30();
|
||||
transformer.transform(new StreamSource(new StringReader(data)), out);
|
||||
return sw.toString();
|
||||
}
|
||||
|
||||
public static String processXPath(String data, String query, String version) throws Exception {
|
||||
Processor p = new Processor(false);
|
||||
XPathCompiler compiler = p.newXPathCompiler();
|
||||
DocumentBuilder builder = p.newDocumentBuilder();
|
||||
XdmNode doc = builder.build(new StreamSource(new StringReader(data)));
|
||||
|
||||
// System.out.println(version);
|
||||
|
||||
compiler.setLanguageVersion(version);
|
||||
|
||||
NewNamespaceResolver resolver = new NewNamespaceResolver();
|
||||
|
||||
NamespaceMap nsMa = resolver.process(doc);
|
||||
|
||||
resolver.exportNamespaces(compiler);
|
||||
|
||||
XdmValue result = compiler.evaluate(query, doc);
|
||||
StringBuilder sb = new StringBuilder();
|
||||
for (XdmItem xdmItem : result) {
|
||||
sb.append(xdmItem);
|
||||
sb.append('\n');
|
||||
}
|
||||
return sb.toString();
|
||||
|
||||
}
|
||||
|
||||
public static String getVersion() {
|
||||
return new Processor(false).getSaxonProductVersion();
|
||||
}
|
||||
}
|
||||
91
REST_XSLT/src/main/java/processors/Xalan.java
Normal file
91
REST_XSLT/src/main/java/processors/Xalan.java
Normal file
@@ -0,0 +1,91 @@
|
||||
package processors;
|
||||
|
||||
import org.apache.xpath.domapi.XPathEvaluatorImpl;
|
||||
import org.w3c.dom.Document;
|
||||
|
||||
import javax.xml.XMLConstants;
|
||||
import javax.xml.namespace.NamespaceContext;
|
||||
import javax.xml.parsers.DocumentBuilder;
|
||||
import javax.xml.parsers.DocumentBuilderFactory;
|
||||
import javax.xml.transform.*;
|
||||
import javax.xml.transform.dom.DOMSource;
|
||||
import javax.xml.transform.stream.StreamResult;
|
||||
import javax.xml.transform.stream.StreamSource;
|
||||
import javax.xml.validation.Schema;
|
||||
import javax.xml.validation.SchemaFactory;
|
||||
import javax.xml.validation.Validator;
|
||||
import javax.xml.xpath.XPath;
|
||||
import javax.xml.xpath.XPathConstants;
|
||||
import javax.xml.xpath.XPathExpression;
|
||||
import javax.xml.xpath.XPathFactory;
|
||||
import java.io.IOException;
|
||||
import java.io.StringReader;
|
||||
import java.io.StringWriter;
|
||||
import org.w3c.dom.NodeList;
|
||||
import org.xml.sax.InputSource;
|
||||
import org.xml.sax.SAXException;
|
||||
|
||||
public class Xalan {
|
||||
|
||||
public static String processXSLT(String data, String transform) throws Exception{
|
||||
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
|
||||
DocumentBuilder builder = factory.newDocumentBuilder();
|
||||
Document document = builder.parse(new InputSource(new StringReader(data)));
|
||||
|
||||
|
||||
|
||||
StreamSource stylesource = new StreamSource(new StringReader(transform));
|
||||
|
||||
|
||||
|
||||
Transformer transformer = TransformerFactory.newInstance().newTransformer(stylesource);
|
||||
transformer.setOutputProperty(OutputKeys.ENCODING, "UTF-8");
|
||||
transformer.setOutputProperty(OutputKeys.INDENT, "yes");
|
||||
Source source = new DOMSource(document);
|
||||
StringWriter sw = new StringWriter();
|
||||
Result outputTarget = new StreamResult(sw);
|
||||
transformer.transform(source, outputTarget);
|
||||
|
||||
return sw.toString();
|
||||
}
|
||||
|
||||
public static String processXPath(String data, String transform) throws Exception{
|
||||
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
|
||||
DocumentBuilder builder = factory.newDocumentBuilder();
|
||||
|
||||
XPath xpath = XPathFactory.newInstance().newXPath();
|
||||
|
||||
xpath.setNamespaceContext(new XalanNamespaceResolver(builder.parse(new InputSource(new StringReader(data))), true));
|
||||
XPathExpression exp = xpath.compile(transform);
|
||||
NodeList nodeList = (NodeList) exp.evaluate(new InputSource(new StringReader(data)), XPathConstants.NODESET);
|
||||
String result = exp.evaluate(new InputSource(new StringReader(data)));
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
public static String getVersion(){
|
||||
return org.apache.xalan.Version.getVersion();
|
||||
}
|
||||
|
||||
public static String validate(String data, String xsd) throws Exception{
|
||||
|
||||
|
||||
Source dataSource = new StreamSource(new StringReader(data));
|
||||
Source xsdSource = new StreamSource(new StringReader(xsd));
|
||||
SchemaFactory schemaFactory = SchemaFactory
|
||||
.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI);
|
||||
// try {
|
||||
Schema schema = schemaFactory.newSchema(xsdSource);
|
||||
Validator validator = schema.newValidator();
|
||||
validator.validate(dataSource);
|
||||
// System.out.println(dataSource.getSystemId() + " is valid");
|
||||
return "XML file is valid";
|
||||
// } catch (SAXException e) {
|
||||
// System.out.println("Invalid: "+e.getMessage());
|
||||
// return "XML file is NOT valid: " + e.getMessage();
|
||||
//// System.out.println(dataSource.getSystemId() + " is NOT valid reason:" + e);
|
||||
// } catch (IOException e) {
|
||||
// return "IO error: "+e.getMessage();
|
||||
// }
|
||||
}
|
||||
}
|
||||
121
REST_XSLT/src/main/java/processors/XalanNamespaceResolver.java
Normal file
121
REST_XSLT/src/main/java/processors/XalanNamespaceResolver.java
Normal file
@@ -0,0 +1,121 @@
|
||||
package processors;
|
||||
|
||||
import org.w3c.dom.*;
|
||||
|
||||
import javax.xml.XMLConstants;
|
||||
import javax.xml.namespace.NamespaceContext;
|
||||
import java.util.HashMap;
|
||||
import java.util.Iterator;
|
||||
import java.util.Map;
|
||||
|
||||
public class XalanNamespaceResolver implements NamespaceContext {
|
||||
private static final String DEFAULT_NS = "DEFAULT";
|
||||
private Map<String, String> prefix2Uri = new HashMap<String, String>();
|
||||
private Map<String, String> uri2Prefix = new HashMap<String, String>();
|
||||
|
||||
/**
|
||||
* This constructor parses the document and stores all namespaces it can
|
||||
* find. If toplevelOnly is true, only namespaces in the root are used.
|
||||
*
|
||||
* @param document
|
||||
* source document
|
||||
* @param toplevelOnly
|
||||
* restriction of the search to enhance performance
|
||||
*/
|
||||
public XalanNamespaceResolver(Document document, boolean toplevelOnly) {
|
||||
examineNode(document.getFirstChild(), toplevelOnly);
|
||||
System.out.println("The list of the cached namespaces:");
|
||||
for (String key : prefix2Uri.keySet()) {
|
||||
System.out.println("prefix " + key + ": uri " + prefix2Uri.get(key));
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* A single node is read, the namespace attributes are extracted and stored.
|
||||
*
|
||||
* @param node
|
||||
* to examine
|
||||
* @param attributesOnly,
|
||||
* if true no recursion happens
|
||||
*/
|
||||
private void examineNode(Node node, boolean attributesOnly) {
|
||||
NamedNodeMap attributes = node.getAttributes();
|
||||
for (int i = 0; i < attributes.getLength(); i++) {
|
||||
Node attribute = attributes.item(i);
|
||||
storeAttribute((Attr) attribute);
|
||||
}
|
||||
|
||||
if (!attributesOnly) {
|
||||
NodeList chields = node.getChildNodes();
|
||||
for (int i = 0; i < chields.getLength(); i++) {
|
||||
Node chield = chields.item(i);
|
||||
if (chield.getNodeType() == Node.ELEMENT_NODE){
|
||||
examineNode(chield, false);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* This method looks at an attribute and stores it, if it is a namespace
|
||||
* attribute.
|
||||
*
|
||||
* @param attribute
|
||||
* to examine
|
||||
*/
|
||||
private void storeAttribute(Attr attribute) {
|
||||
// examine the attributes in namespace xmlns
|
||||
String uri = attribute.getNamespaceURI();
|
||||
String name = attribute.getLocalName();
|
||||
String name2 = attribute.getName();
|
||||
String value = attribute.getNodeValue();
|
||||
if (attribute.getNodeValue() != null
|
||||
/*&& attribute.getNamespaceURI().equals(
|
||||
XMLConstants.XMLNS_ATTRIBUTE_NS_URI)*/) {
|
||||
// Default namespace xmlns="uri goes here"
|
||||
if (attribute.getNodeName().equals(XMLConstants.XMLNS_ATTRIBUTE)) {
|
||||
putInCache(DEFAULT_NS, attribute.getNodeValue());
|
||||
} else {
|
||||
// The defined prefixes are stored here
|
||||
putInCache(attribute.getName().replace("xmlns:", ""), attribute.getNodeValue());
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private void putInCache(String prefix, String uri) {
|
||||
prefix2Uri.put(prefix, uri);
|
||||
uri2Prefix.put(uri, prefix);
|
||||
}
|
||||
|
||||
/**
|
||||
* This method is called by XPath. It returns the default namespace, if the
|
||||
* prefix is null or "".
|
||||
*
|
||||
* @param prefix
|
||||
* to search for
|
||||
* @return uri
|
||||
*/
|
||||
public String getNamespaceURI(String prefix) {
|
||||
if (prefix == null || prefix.equals(XMLConstants.DEFAULT_NS_PREFIX)) {
|
||||
return prefix2Uri.get(DEFAULT_NS);
|
||||
} else {
|
||||
return prefix2Uri.get(prefix);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* This method is not needed in this context, but can be implemented in a
|
||||
* similar way.
|
||||
*/
|
||||
public String getPrefix(String namespaceURI) {
|
||||
return uri2Prefix.get(namespaceURI);
|
||||
}
|
||||
|
||||
public Iterator getPrefixes(String namespaceURI) {
|
||||
// Not implemented
|
||||
return null;
|
||||
}
|
||||
|
||||
}
|
||||
9
REST_XSLT/src/main/resources/log4j.properties
Normal file
9
REST_XSLT/src/main/resources/log4j.properties
Normal file
@@ -0,0 +1,9 @@
|
||||
# Set root logger level to DEBUG and its only appender to A1.
|
||||
log4j.rootLogger=ERROR, A1
|
||||
|
||||
# A1 is set to be a ConsoleAppender.
|
||||
log4j.appender.A1=org.apache.log4j.ConsoleAppender
|
||||
|
||||
# A1 uses PatternLayout.
|
||||
log4j.appender.A1.layout=org.apache.log4j.PatternLayout
|
||||
log4j.appender.A1.layout.ConversionPattern=%-4r [%t] %-5p %c %x - %m%n
|
||||
Binary file not shown.
BIN
REST_XSLT/target/REST_XSLT-1.0-SNAPSHOT.jar
Normal file
BIN
REST_XSLT/target/REST_XSLT-1.0-SNAPSHOT.jar
Normal file
Binary file not shown.
BIN
REST_XSLT/target/classes/Main.class
Normal file
BIN
REST_XSLT/target/classes/Main.class
Normal file
Binary file not shown.
9
REST_XSLT/target/classes/log4j.properties
Normal file
9
REST_XSLT/target/classes/log4j.properties
Normal file
@@ -0,0 +1,9 @@
|
||||
# Set root logger level to DEBUG and its only appender to A1.
|
||||
log4j.rootLogger=ERROR, A1
|
||||
|
||||
# A1 is set to be a ConsoleAppender.
|
||||
log4j.appender.A1=org.apache.log4j.ConsoleAppender
|
||||
|
||||
# A1 uses PatternLayout.
|
||||
log4j.appender.A1.layout=org.apache.log4j.PatternLayout
|
||||
log4j.appender.A1.layout.ConversionPattern=%-4r [%t] %-5p %c %x - %m%n
|
||||
BIN
REST_XSLT/target/classes/processors/NewNamespaceResolver.class
Normal file
BIN
REST_XSLT/target/classes/processors/NewNamespaceResolver.class
Normal file
Binary file not shown.
BIN
REST_XSLT/target/classes/processors/Saxon.class
Normal file
BIN
REST_XSLT/target/classes/processors/Saxon.class
Normal file
Binary file not shown.
BIN
REST_XSLT/target/classes/processors/Xalan.class
Normal file
BIN
REST_XSLT/target/classes/processors/Xalan.class
Normal file
Binary file not shown.
BIN
REST_XSLT/target/classes/processors/XalanNamespaceResolver.class
Normal file
BIN
REST_XSLT/target/classes/processors/XalanNamespaceResolver.class
Normal file
Binary file not shown.
5
REST_XSLT/target/maven-archiver/pom.properties
Normal file
5
REST_XSLT/target/maven-archiver/pom.properties
Normal file
@@ -0,0 +1,5 @@
|
||||
#Generated by Maven
|
||||
#Mon Feb 01 11:43:32 CET 2021
|
||||
groupId=r11.mltx
|
||||
artifactId=REST_XSLT
|
||||
version=1.0-SNAPSHOT
|
||||
@@ -0,0 +1,3 @@
|
||||
Main.class
|
||||
XSLTProcessors.class
|
||||
XPathProcessors.class
|
||||
@@ -0,0 +1,3 @@
|
||||
/home/milu/Documents/czopw/Web/REST_XSLT/src/main/java/Main.java
|
||||
/home/milu/Documents/czopw/Web/REST_XSLT/src/main/java/XSLTProcessors.java
|
||||
/home/milu/Documents/czopw/Web/REST_XSLT/src/main/java/XPathProcessors.java
|
||||
16
docker-compose.yml
Normal file
16
docker-compose.yml
Normal file
@@ -0,0 +1,16 @@
|
||||
version: "3"
|
||||
|
||||
services:
|
||||
xmltools-frontend:
|
||||
build: ./Frontend
|
||||
container_name: xmltools-frontend
|
||||
image: xmltools-frontend
|
||||
ports:
|
||||
- 8086:80
|
||||
|
||||
xmltools-backend:
|
||||
build: ./REST_XSLT
|
||||
container_name: xmltools-backend
|
||||
image: xmltools-backend
|
||||
ports:
|
||||
- 8081:8081
|
||||
Reference in New Issue
Block a user