commit 3e7daea3ac21c64017155fe39cd86ba7a230b433 Author: Wojciech Czop Date: Mon Apr 26 16:16:04 2021 +0200 Initial commit diff --git a/Frontend/Dockerfile b/Frontend/Dockerfile new file mode 100644 index 0000000..7ead6d2 --- /dev/null +++ b/Frontend/Dockerfile @@ -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 \ No newline at end of file diff --git a/Frontend/jquery-3.6.0.slim.min.js b/Frontend/jquery-3.6.0.slim.min.js new file mode 100644 index 0000000..7556941 --- /dev/null +++ b/Frontend/jquery-3.6.0.slim.min.js @@ -0,0 +1,2 @@ +/*! jQuery v3.6.0 -ajax,-ajax/jsonp,-ajax/load,-ajax/script,-ajax/var/location,-ajax/var/nonce,-ajax/var/rquery,-ajax/xhr,-manipulation/_evalUrl,-deprecated/ajax-event-alias,-effects,-effects/Tween,-effects/animatedSelector | (c) OpenJS Foundation and other contributors | jquery.org/license */ +!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(g,e){"use strict";var t=[],r=Object.getPrototypeOf,s=t.slice,v=t.flat?function(e){return t.flat.call(e)}:function(e){return t.concat.apply([],e)},u=t.push,i=t.indexOf,n={},o=n.toString,y=n.hasOwnProperty,a=y.toString,l=a.call(Object),m={},b=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType&&"function"!=typeof e.item},x=function(e){return null!=e&&e===e.window},w=g.document,c={type:!0,src:!0,nonce:!0,noModule:!0};function C(e,t,n){var r,i,o=(n=n||w).createElement("script");if(o.text=e,t)for(r in c)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function T(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[o.call(e)]||"object":typeof e}var f="3.6.0 -ajax,-ajax/jsonp,-ajax/load,-ajax/script,-ajax/var/location,-ajax/var/nonce,-ajax/var/rquery,-ajax/xhr,-manipulation/_evalUrl,-deprecated/ajax-event-alias,-effects,-effects/Tween,-effects/animatedSelector",E=function(e,t){return new E.fn.init(e,t)};function d(e){var t=!!e&&"length"in e&&e.length,n=T(e);return!b(e)&&!x(e)&&("array"===n||0===t||"number"==typeof t&&0+~]|"+R+")"+R+"*"),U=new RegExp(R+"|>"),V=new RegExp(W),X=new RegExp("^"+B+"$"),Q={ID:new RegExp("^#("+B+")"),CLASS:new RegExp("^\\.("+B+")"),TAG:new RegExp("^("+B+"|[*])"),ATTR:new RegExp("^"+M),PSEUDO:new RegExp("^"+W),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+R+"*(even|odd|(([+-]|)(\\d*)n|)"+R+"*(?:([+-]|)"+R+"*(\\d+)|))"+R+"*\\)|)","i"),bool:new RegExp("^(?:"+I+")$","i"),needsContext:new RegExp("^"+R+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+R+"*((?:-\\d)?\\d*)"+R+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,G=/^(?:input|select|textarea|button)$/i,K=/^h\d$/i,J=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\[\\da-fA-F]{1,6}"+R+"?|\\\\([^\\r\\n\\f])","g"),ne=function(e,t){var n="0x"+e.slice(1)-65536;return t||(n<0?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,1023&n|56320))},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){C()},ae=xe(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{O.apply(t=P.call(d.childNodes),d.childNodes),t[d.childNodes.length].nodeType}catch(e){O={apply:t.length?function(e,t){q.apply(e,P.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,d=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==d&&9!==d&&11!==d)return n;if(!r&&(C(e),e=e||T,E)){if(11!==d&&(u=Z.exec(t)))if(i=u[1]){if(9===d){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&y(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return O.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&p.getElementsByClassName&&e.getElementsByClassName)return O.apply(n,e.getElementsByClassName(i)),n}if(p.qsa&&!k[t+" "]&&(!v||!v.test(t))&&(1!==d||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===d&&(U.test(t)||_.test(t))){(f=ee.test(t)&&ye(e.parentNode)||e)===e&&p.scope||((s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=A)),o=(l=h(t)).length;while(o--)l[o]=(s?"#"+s:":scope")+" "+be(l[o]);c=l.join(",")}try{return O.apply(n,f.querySelectorAll(c)),n}catch(e){k(t,!0)}finally{s===A&&e.removeAttribute("id")}}}return g(t.replace($,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>x.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[A]=!0,e}function ce(e){var t=T.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)x.attrHandle[n[r]]=t}function de(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function pe(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ve(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ye(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in p=se.support={},i=se.isXML=function(e){var t=e&&e.namespaceURI,n=e&&(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},C=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:d;return r!=T&&9===r.nodeType&&r.documentElement&&(a=(T=r).documentElement,E=!i(T),d!=T&&(n=T.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),p.scope=ce(function(e){return a.appendChild(e).appendChild(T.createElement("div")),"undefined"!=typeof e.querySelectorAll&&!e.querySelectorAll(":scope fieldset div").length}),p.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),p.getElementsByTagName=ce(function(e){return e.appendChild(T.createComment("")),!e.getElementsByTagName("*").length}),p.getElementsByClassName=J.test(T.getElementsByClassName),p.getById=ce(function(e){return a.appendChild(e).id=A,!T.getElementsByName||!T.getElementsByName(A).length}),p.getById?(x.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},x.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(x.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},x.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),x.find.TAG=p.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):p.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},x.find.CLASS=p.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],v=[],(p.qsa=J.test(T.querySelectorAll))&&(ce(function(e){var t;a.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+R+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+R+"*(?:value|"+I+")"),e.querySelectorAll("[id~="+A+"-]").length||v.push("~="),(t=T.createElement("input")).setAttribute("name",""),e.appendChild(t),e.querySelectorAll("[name='']").length||v.push("\\["+R+"*name"+R+"*="+R+"*(?:''|\"\")"),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+A+"+*").length||v.push(".#.+[+~]"),e.querySelectorAll("\\\f"),v.push("[\\r\\n\\f]")}),ce(function(e){e.innerHTML="";var t=T.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&v.push("name"+R+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&v.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&v.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),v.push(",.*:")})),(p.matchesSelector=J.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){p.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",W)}),v=v.length&&new RegExp(v.join("|")),s=s.length&&new RegExp(s.join("|")),t=J.test(a.compareDocumentPosition),y=t||J.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},D=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)==(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!p.sortDetached&&t.compareDocumentPosition(e)===n?e==T||e.ownerDocument==d&&y(d,e)?-1:t==T||t.ownerDocument==d&&y(d,t)?1:u?H(u,e)-H(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e==T?-1:t==T?1:i?-1:o?1:u?H(u,e)-H(u,t):0;if(i===o)return de(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?de(a[r],s[r]):a[r]==d?-1:s[r]==d?1:0}),T},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if(C(e),p.matchesSelector&&E&&!k[t+" "]&&(!s||!s.test(t))&&(!v||!v.test(t)))try{var n=c.call(e,t);if(n||p.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){k(t,!0)}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return Q.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&V.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=m[e+" "];return t||(t=new RegExp("(^|"+R+")"+e+"("+R+"|$)"))&&m(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function D(e,n,r){return b(n)?E.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?E.grep(e,function(e){return e===n!==r}):"string"!=typeof n?E.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/;(E.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||L,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:j.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof E?t[0]:t,E.merge(this,E.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:w,!0)),k.test(r[1])&&E.isPlainObject(t))for(r in t)b(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=w.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):b(e)?void 0!==n.ready?n.ready(e):e(E):E.makeArray(e,this)}).prototype=E.fn,L=E(w);var q=/^(?:parents|prev(?:Until|All))/,O={children:!0,contents:!0,next:!0,prev:!0};function P(e,t){while((e=e[t])&&1!==e.nodeType);return e}E.fn.extend({has:function(e){var t=E(e,this),n=t.length;return this.filter(function(){for(var e=0;e\x20\t\r\n\f]*)/i,pe=/^$|^module$|\/(?:java|ecma)script/i;le=w.createDocumentFragment().appendChild(w.createElement("div")),(ce=w.createElement("input")).setAttribute("type","radio"),ce.setAttribute("checked","checked"),ce.setAttribute("name","t"),le.appendChild(ce),m.checkClone=le.cloneNode(!0).cloneNode(!0).lastChild.checked,le.innerHTML="",m.noCloneChecked=!!le.cloneNode(!0).lastChild.defaultValue,le.innerHTML="",m.option=!!le.lastChild;var he={thead:[1,"","
"],col:[2,"","
"],tr:[2,"","
"],td:[3,"","
"],_default:[0,"",""]};function ge(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&S(e,t)?E.merge([e],n):n}function ve(e,t){for(var n=0,r=e.length;n",""]);var ye=/<|&#?\w+;/;function me(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),d=[],p=0,h=e.length;p\s*$/g;function ke(e,t){return S(e,"table")&&S(11!==t.nodeType?t:t.firstChild,"tr")&&E(e).children("tbody")[0]||e}function De(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function Le(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function je(e,t){var n,r,i,o,a,s;if(1===t.nodeType){if(Y.hasData(e)&&(s=Y.get(e).events))for(i in Y.remove(t,"handle events"),s)for(n=0,r=s[i].length;n
",2===lt.childNodes.length),E.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(m.createHTMLDocument?((r=(t=w.implementation.createHTMLDocument("")).createElement("base")).href=w.location.href,t.head.appendChild(r)):t=w),o=!n&&[],(i=k.exec(e))?[t.createElement(i[1])]:(i=me([e],t,o),o&&o.length&&E(o).remove(),E.merge([],i.childNodes)));var r,i,o},E.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=E.css(e,"position"),c=E(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=E.css(e,"top"),u=E.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),b(t)&&(t=t.call(e,n,E.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):c.css(f)}},E.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){E.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===E.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===E.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=E(e).offset()).top+=E.css(e,"borderTopWidth",!0),i.left+=E.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-E.css(r,"marginTop",!0),left:t.left-i.left-E.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===E.css(e,"position"))e=e.offsetParent;return e||re})}}),E.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;E.fn[t]=function(e){return $(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),E.each(["top","left"],function(e,n){E.cssHooks[n]=Me(m.pixelPosition,function(e,t){if(t)return t=Be(e,n),Pe.test(t)?E(e).position()[n]+"px":t})}),E.each({Height:"height",Width:"width"},function(a,s){E.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){E.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return $(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?E.css(e,t,i):E.style(e,t,n,i)},s,n?e:void 0,n)}})}),E.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)},hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),E.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){E.fn[n]=function(e,t){return 0 + + + + + + + + + +
+ +
+ [1.0] fn:last() +
+ Returns the position of the last node in the context list
+ Link do dokumentacji W3C: Node-Set-Functions +
+
+
+ + + + + \ No newline at end of file diff --git a/Frontend/new_css/font/fontello.eot b/Frontend/new_css/font/fontello.eot new file mode 100644 index 0000000..8eb8762 Binary files /dev/null and b/Frontend/new_css/font/fontello.eot differ diff --git a/Frontend/new_css/font/fontello.svg b/Frontend/new_css/font/fontello.svg new file mode 100644 index 0000000..66886e8 --- /dev/null +++ b/Frontend/new_css/font/fontello.svg @@ -0,0 +1,14 @@ + + + +Copyright (C) 2021 by original authors @ fontello.com + + + + + + + + + + \ No newline at end of file diff --git a/Frontend/new_css/font/fontello.ttf b/Frontend/new_css/font/fontello.ttf new file mode 100644 index 0000000..a6a2ea2 Binary files /dev/null and b/Frontend/new_css/font/fontello.ttf differ diff --git a/Frontend/new_css/font/fontello.woff b/Frontend/new_css/font/fontello.woff new file mode 100644 index 0000000..8e3c9e6 Binary files /dev/null and b/Frontend/new_css/font/fontello.woff differ diff --git a/Frontend/new_css/font/fontello.woff2 b/Frontend/new_css/font/fontello.woff2 new file mode 100644 index 0000000..b1c349b Binary files /dev/null and b/Frontend/new_css/font/fontello.woff2 differ diff --git a/Frontend/new_css/fontello.css b/Frontend/new_css/fontello.css new file mode 100644 index 0000000..28bc34a --- /dev/null +++ b/Frontend/new_css/fontello.css @@ -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'; } /* '' */ \ No newline at end of file diff --git a/Frontend/new_css/main.css b/Frontend/new_css/main.css new file mode 100644 index 0000000..cc1237d --- /dev/null +++ b/Frontend/new_css/main.css @@ -0,0 +1,3 @@ +.container { + +} \ No newline at end of file diff --git a/Frontend/new_css/r11form.css b/Frontend/new_css/r11form.css new file mode 100644 index 0000000..d7e87f5 --- /dev/null +++ b/Frontend/new_css/r11form.css @@ -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%; +} \ No newline at end of file diff --git a/Frontend/sample_data/sample_xml.xml b/Frontend/sample_data/sample_xml.xml new file mode 100644 index 0000000..cd89168 --- /dev/null +++ b/Frontend/sample_data/sample_xml.xml @@ -0,0 +1,33 @@ + + + City library + 345123 + + + 7321 + Adam + Choke + + + 5123 + Lauren + Wong + + + + + 6422 + Harry Potter + 7542 + + + 1234 + Macbeth + 5123 + + + 9556 + Romeo and Juliet + + + \ No newline at end of file diff --git a/Frontend/scripts.js b/Frontend/scripts.js new file mode 100644 index 0000000..981ae40 --- /dev/null +++ b/Frontend/scripts.js @@ -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 = ""; + } + + // 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"; + } + }); + + }); +} \ No newline at end of file diff --git a/Frontend/styles.css b/Frontend/styles.css new file mode 100644 index 0000000..0d1426e --- /dev/null +++ b/Frontend/styles.css @@ -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; +} \ No newline at end of file diff --git a/Frontend/xpath (copy).html b/Frontend/xpath (copy).html new file mode 100644 index 0000000..7532031 --- /dev/null +++ b/Frontend/xpath (copy).html @@ -0,0 +1,1094 @@ + + + + + + + + + + + +
+
+

Online XPath tester v: 0.015

+ + + + + + +

+ + +

+ + +
+ +

+ + +
+
+

What is XPath?

+

XPath is a querry language used for selecting nodes from XML and processing them.
+ It may perform operations on strings, numbers and boolean values.

+ + + +
+

XPath 2.0 introduced many new features XQuery-cośtam:
+ - Added support for all XML simple types
+ - Many new functions (trippled instruction count)
+ - All expressions evaluate to sequence
+ - Introduces conditional expressions and for-loops
+

+

XPath 3.0
+ - Dynamic function collapsible
+ - Inline functions
+ - Support for union types
+ - Introduced maps +

+ +
+ + +

XPath 1.0 functions

+ + + + + +
+ [1.0] fn:last() - Returns the position of the + last node in the context list +
+ + Link do dokumentacji W3C: Node-Set-Functions +
+ + [1.0] fn:position() - Returns the position of the + current context node +
+ + Link do dokumentacji W3C: Node-Set-Functions +
+ + [1.0] fn:count(node-set) - Returns the number of + nodes in the node-set +
+ Arguments and return type + + + + + + + + + +
TypeDescription
node-setNode-set to count nodes in
Examples:
+ + + + + + + + + + + + + +
ExpressionResult
count(//b:book)5
count(//person[@id>5])17
+ Link do dokumentacji W3C: Node-Set-Functions +
+ + [1.0] fn:id(object) - Returns the element + specified by it's unique id, requires DTD +
+ + Link do dokumentacji W3C: Node-Set-Functions +
+ + [1.0] fn:local-name(node-set) - Returns the + local-name for the first node in the node-set +
+ Arguments and return type + + + + + + + + + +
TypeDescription
node-setExtract first node and return its local name
Examples:
+ + + + + + + + + + + + + +
ExpressionResult
local-name(//b:books)b:book
local-name(//b:book)b:title
+ Link do dokumentacji W3C: Node-Set-Functions +
+ + [1.0] fn:local-name() - Returns the local-name + for the context node +
+ + Link do dokumentacji W3C: Node-Set-Functions +
+ + [1.0] fn:namespace-uri(node-set) - Returns the + namespace-uri for the first node in the node-set +
+ Arguments and return type + + + + + + + + + +
TypeDescription
node-setExtract first node and return the namespace URI
Examples:
+ + + + + + + + + +
ExpressionResult
namespace-uri(//b:book)http://www.book.com
+ Link do dokumentacji W3C: Node-Set-Functions +
+ + [1.0] fn:namespace-uri() - Returns the + namespace-uri for the context node +
+ + Link do dokumentacji W3C: Node-Set-Functions +
+ + [1.0] fn:name(node-set) - Returns the name for + the first node in the node-set +
+ Arguments and return type + + + + + + + + + +
TypeDescription
node-setExtract first node and return QName
Examples:
+ + + + + + + + + + + + + +
ExpressionResult
name(//b:books/*)b:book
name(//b:book/*)b:title
+ Link do dokumentacji W3C: Node-Set-Functions +
+ + [1.0] fn:name() - Returns the name for the + context node +
+ Examples:
+ + + + + + + + + +
ExpressionResult
current context nodeExtract first node and return QName
+ Link do dokumentacji W3C: Node-Set-Functions +
+ + +
+
+ [1.0] fn:string(object) - Returns the string + representation of the object argument +
+ Arguments and return type + + + + + + + + + +
TypeDescription
stringThe object to convert to a string
Examples:
+ + + + + + + + + + + + + +
ExpressionResult
string((1<0))false
string(.11)0.11
+ Link do dokumentacji W3C: String-Functions +
+ + [1.0] fn:string() - Returns a string value + representation of the context node +
+ + Link do dokumentacji W3C: String-Functions +
+ + [1.0] fn:concat(string, string, string*) - + Returns the concatenation of its arguments +
+ Arguments and return type + + + + + + + + + + + + + + + + + +
TypeDescription
stringString to be merged
stringString to be merged
string*any number of strings
Examples:
+ + + + + + + + + + + + + +
ExpressionResult
concat("aa","bb")aabb
concat("aa", 123)aa123
+ Link do dokumentacji W3C: String-Functions +
+ + [1.0] fn:starts-with(string, string) - Returns + true if the first string starts with the second string +
+ Arguments and return type + + + + + + + + + + + + + +
TypeDescription
stringString to be searched
stringString to be found
Examples:
+ + + + + + + + + + + + + +
ExpressionResult
starts-with("aabb", "aa")true
starts-with("aabb", "cc")false
+ Link do dokumentacji W3C: String-Functions +
+ + [1.0] fn:contains(string, string) - Returns true + if the first string contains the second string +
+ Arguments and return type + + + + + + + + + + + + + +
TypeDescription
stringString to be searched
stringString to be found
Examples:
+ + + + + + + + + + + + + +
ExpressionResult
contains("abc", "c")true
contains("abc", "1")false
+ Link do dokumentacji W3C: String-Functions +
+ + [1.0] fn:substring-before(string, string) - + Returns the substring found before the first occurrence of the second argument +
+ Arguments and return type + + + + + + + + + + + + + +
TypeDescription
stringString to be searched
stringString to be used to split
Examples:
+ + + + + + + + + + + + + +
ExpressionResult
substring-before("aabbcc","bb")aa
substring-before("aabbcc","c")aabb
+ Link do dokumentacji W3C: String-Functions +
+ + [1.0] fn:substring-after(string, string) - + Returns the substring found after the first occurrence of the second argument +
+ Arguments and return type + + + + + + + + + + + + + +
TypeDescription
stringString to be searched
stringString to be used to split
Examples:
+ + + + + + + + + + + + + +
ExpressionResult
substring-after("aabbcc","bb")cc
substring-after("aabbcc","a")abbcc
+ Link do dokumentacji W3C: String-Functions +
+ + [1.0] fn:substring(string, number, number) - + Returns the substring starting at second argument with lenght of third argument +
+ Arguments and return type + + + + + + + + + + + + + + + + + +
TypeDescription
stringString to be cut
integerStarting position
integerLength of the substring
Examples:
+ + + + + + + + + +
ExpressionResult
substring("aabbcc", 1, 2)aa
+ Link do dokumentacji W3C: String-Functions +
+ + [1.0] fn:substring(string, number) - Returns the + substring of the first argument from the position specified by the second argument +
+ Arguments and return type + + + + + + + + + + + + + +
TypeDescription
stringString to be cut
integerStarting position
Examples:
+ + + + + + + + + +
ExpressionResult
substring("aabbcc", 3)bbcc
+ Link do dokumentacji W3C: String-Functions +
+ + [1.0] fn:string-length(string) - Returns the + length of the string specified by the argument +
+ Arguments and return type + + + + + + + + + +
TypeDescription
stringString of which length should be returned
Examples:
+ + + + + + + + + + + + + +
ExpressionResult
string-length("aabbcc")6
string-length("aa bb cc")8
+ Link do dokumentacji W3C: String-Functions +
+ + [1.0] fn:string-length() - Returns the length of + the string specified by the context node +
+ + Link do dokumentacji W3C: String-Functions +
+ + [1.0] fn:normalize-space(string) - Returns a + white-space normalized string +
+ Arguments and return type + + + + + + + + + +
TypeDescription
stringString to be normalized
Examples:
+ + + + + + + + + + + + + +
ExpressionResult
normalize-space("aa bb cc")aa bb cc
normalize-space("aa bb cc")aa bb cc
+ Link do dokumentacji W3C: String-Functions +
+ + [1.0] fn:normalize-space() - Returns a + white-space normalized string specified by the context-node +
+ + Link do dokumentacji W3C: String-Functions +
+ + [1.0] fn:translate(string, string, string) - + Replaces characters specified by the second argument using those from the third argument +
+ Arguments and return type + + + + + + + + + + + + + + + + + +
TypeDescription
stringString to be edited
stringsequence of characters to be replaced
stringsequence of character to be used in replacement
Examples:
+ + + + + + + + + + + + + +
ExpressionResult
translate("aabbcc", "ab","xz")xxzzcc
translate("Test sequence", "e","z")Tzst szquzncz
+ Link do dokumentacji W3C: String-Functions +
+ + +
+
+ [1.0] fn:boolean(object) - Returns the boolean + representation of the object argument +
+ Arguments and return type + + + + + + + + + +
TypeDescription
expressionThe expression to be evaluated
Examples:
+ + + + + + + + + + + + + +
ExpressionResult
boolean(1>2)false
boolean("a"="a")true
+ Link do dokumentacji W3C: Boolean-Functions +
+ + [1.0] fn:not(boolean) - Returns a boolean with + the opposite value of its argument +
+ Arguments and return type + + + + + + + + + +
TypeDescription
booleanBoolean value to be inverted
Examples:
+ + + + + + + + + + + + + +
ExpressionResult
not("a"="a")false
not(true)false
+ Link do dokumentacji W3C: Boolean-Functions +
+ + [1.0] fn:true() - Returns a boolean with the + value of true +
+ Arguments and return type + + + + + + + + + +
TypeDescription
Returns boolean value true
Examples:
+ + + + + + + + + +
ExpressionResult
true()true
+ Link do dokumentacji W3C: Boolean-Functions +
+ + [1.0] fn:false() - Returns a boolean with the + value of false +
+ Arguments and return type + + + + + + + + + +
TypeDescription
Returns boolean value false
Examples:
+ + + + + + + + + +
ExpressionResult
false()false
+ Link do dokumentacji W3C: Boolean-Functions +
+ + [1.0] fn:lang(string) - Returns true if the + language of the context node is the same as the languag specified by the argument +
+ Arguments and return type + + + + + + + + + +
TypeDescription
stringChecks if the context node matches given language
Examples:
+ + + + + + + + + + + + + + + + + +
ExpressionResult
(context: ): lang('en')true
(context: ): lang('en')true
(context: ): lang('en')false
+ Link do dokumentacji W3C: Boolean-Functions +
+ + +
+
+ [1.0] fn:number(object) - Returns the number + representation of the object argument +
+ Arguments and return type + + + + + + + + + +
TypeDescription
objectConverts given object to a number
Examples:
+ + + + + + + + + + + + + + + + + + + + + +
ExpressionResult
number(true())1
number(false())0
number("55")55
number(" 55 ")55
+ Link do dokumentacji W3C: Number-Functions +
+ + [1.0] fn:number() - Returns the number + representation of the context node +
+ Arguments and return type + + + + + + + + + +
TypeDescription
current context nodeConverts current context node to a number
Examples:
+ + + + + + + + + + + + + + + + + + + + + +
ExpressionResult
number(true())1
number(false())0
number("55")55
number(" 55 ")55
+ Link do dokumentacji W3C: Number-Functions +
+ + [1.0] fn:sum(node-set) - Returns the sum of all + nodes in the node-set +
+ Arguments and return type + + + + + + + + + +
TypeDescription
node-setSumms each node from the set passed through number() function
+ Link do dokumentacji W3C: Number-Functions +
+ + [1.0] fn:floor(number) - Returns the largest + integer value not greater than the argument +
+ Arguments and return type + + + + + + + + + +
TypeDescription
numberDecimal number to be converted to integer
Examples:
+ + + + + + + + + + + + + +
ExpressionResult
floor(3.1)3
floor(3.99)3
+ Link do dokumentacji W3C: Number-Functions +
+ + [1.0] fn:ceiling(number) - Returns the smallest + integer value not less than the argument +
+ Arguments and return type + + + + + + + + + +
TypeDescription
numberDecimal number to be converted to integer
Examples:
+ + + + + + + + + + + + + +
ExpressionResult
ceiling(3.1)4
ceiling(3.99)4
+ Link do dokumentacji W3C: Number-Functions +
+ + [1.0] fn:round(number) - Returns the integer + value closest to the argument +
+ Arguments and return type + + + + + + + + + +
TypeDescription
numberDecimal number to be converted to integer
Examples:
+ + + + + + + + + + + + + +
ExpressionResult
round(3.1)3
round(3.6)4
+ Link do dokumentacji W3C: Number-Functions +
+ +
+ +
+
+ + + + +
+ + + + + + + + + + + + \ No newline at end of file diff --git a/Frontend/xpath.html b/Frontend/xpath.html new file mode 100644 index 0000000..769490e --- /dev/null +++ b/Frontend/xpath.html @@ -0,0 +1,3208 @@ + + + + + + + + + + + + + + +
+
+
+
+

Online XPath tester v0.4

+
+ +
+
+ + + + +
+ +
+ + + +

+ + +
+ +

+ + + +
+
+
+

What is XPath?

+

XPath is a querry language used for selecting nodes from XML and processing them.
+ It may perform operations on strings, numbers and boolean values.

+ + +
+ +
+

XPath 2.0 introduced many new features XQuery-cośtam:
+ - Added support for all XML simple types
+ - Many new functions (trippled instruction count)
+ - All expressions evaluate to sequence
+ - Introduces conditional expressions and for-loops
+

+

XPath 3.0
+ - Dynamic function calls (function may be called without being referenced by name (find + function in collection and call)
+ - Inline functions
+ - Namespace literals - Namespace may be embeded into function name
+ - Support for union types - collections containing elements of different types
+ - Mapping operator - '!' performs evaluation for each element in sequence and + concatenates results
+ - Introduced maps
+

+

XPath 3.1
+ - New operator for function chaing '=>'
+ - Introduced maps that store data in pair 'key:value' - 'map{ key : value, key : value + }'
+ - Introduced arrays - they differ from sequences in that they can be nested 'array{1, 5, 7, + (10 to 20)}'
+ +

+
+
+ +

XPath 1.0 & 2.0 functions

+ + + + + +
+ +
+ + + [1.0] fn:last() +
+
+ Returns the position of the last node in the context list
+
+ W3C Documentation reference: Node-Set-Functions +
+
+ + + + [1.0] fn:position() +
+
+ Returns the position of the current context node
+
+ W3C Documentation reference: Node-Set-Functions +
+
+ + + + [1.0] fn:count(node-set) +
+
+ Returns the number of nodes in the node-set
+ Arguments and return type: + + + + + + + + + +
TypeDescription
node-setNode-set to count nodes in
Examples:
+ + + + + + + + + + + + + +
ExpressionResult
count(//b:book)5
count(//person[@id>5])17

+ W3C Documentation reference: Node-Set-Functions +
+
+ + + + [1.0] fn:id(object) +
+
+ Returns the element specified by it's unique id, requires DTD
+
+ W3C Documentation reference: Node-Set-Functions +
+
+ + + + [1.0] fn:local-name(node-set) +
+
+ Returns the local-name for the first node in the node-set
+ Arguments and return type: + + + + + + + + + +
TypeDescription
node-setExtract first node and return its local name
Examples:
+ + + + + + + + + + + + + +
ExpressionResult
local-name(//b:books)b:book
local-name(//b:book)b:title

+ W3C Documentation reference: Node-Set-Functions +
+
+ + + + [1.0] fn:local-name() +
+
+ Returns the local-name for the context node
+
+ W3C Documentation reference: Node-Set-Functions +
+
+ + + + [1.0] fn:namespace-uri(node-set) +
+
+ Returns the namespace-uri for the first node in the node-set
+ Arguments and return type: + + + + + + + + + +
TypeDescription
node-setExtract first node and return the namespace URI
Examples:
+ + + + + + + + + +
ExpressionResult
namespace-uri(//b:book)http://www.book.com

+ W3C Documentation reference: Node-Set-Functions +
+
+ + + + [1.0] fn:namespace-uri() +
+
+ Returns the namespace-uri for the context node
+
+ W3C Documentation reference: Node-Set-Functions +
+
+ + + + [1.0] fn:name(node-set) +
+
+ Returns the name for the first node in the node-set
+ Arguments and return type: + + + + + + + + + +
TypeDescription
node-setExtract first node and return QName
Examples:
+ + + + + + + + + + + + + +
ExpressionResult
name(//b:books/*)b:book
name(//b:book/*)b:title

+ W3C Documentation reference: Node-Set-Functions +
+
+ + + + [1.0] fn:name() +
+
+ Returns the name for the context node
+ Examples:
+ + + + + + + + + +
ExpressionResult
current context nodeExtract first node and return QName

+ W3C Documentation reference: Node-Set-Functions +
+
+ + + +
+
+
+ +
+ + + [1.0] fn:string(object) +
+
+ Returns the string representation of the object argument
+ Arguments and return type: + + + + + + + + + +
TypeDescription
stringThe object to convert to a string
Examples:
+ + + + + + + + + + + + +
ExpressionResult
string((1<0))< /td> + false
string(.11)0.11

+ W3C Documentation reference: String-Functions +
+
+ + + + [1.0] fn:string() +
+
+ Returns a string value representation of the context node
+
+ W3C Documentation reference: String-Functions +
+
+ + + + [1.0] fn:concat(string, string, string*) +
+
+ Returns the concatenation of its arguments
+ Arguments and return type: + + + + + + + + + + + + + + + + + +
TypeDescription
stringString to be merged
stringString to be merged
string*any number of strings
Examples:
+ + + + + + + + + + + + + +
ExpressionResult
concat("aa","bb")aabb
concat("aa", 123)aa123

+ W3C Documentation reference: String-Functions +
+
+ + + + [1.0] fn:starts-with(string, string) +
+
+ Returns true if the first string starts with the second string
+ Arguments and return type: + + + + + + + + + + + + + +
TypeDescription
stringString to be searched
stringString to be found
Examples:
+ + + + + + + + + + + + + +
ExpressionResult
starts-with("aabb", "aa")true
starts-with("aabb", "cc")false

+ W3C Documentation reference: String-Functions +
+
+ + + + [1.0] fn:contains(string, string) +
+
+ Returns true if the first string contains the second string
+ Arguments and return type: + + + + + + + + + + + + + +
TypeDescription
stringString to be searched
stringString to be found
Examples:
+ + + + + + + + + + + + + +
ExpressionResult
contains("abc", "c")true
contains("abc", "1")false

+ W3C Documentation reference: String-Functions +
+
+ + + + [1.0] fn:substring-before(string, string) +
+
+ Returns the substring found before the first occurrence of the second argument
+ Arguments and return type: + + + + + + + + + + + + + +
TypeDescription
stringString to be searched
stringString to be used to split
Examples:
+ + + + + + + + + + + + + +
ExpressionResult
substring-before("aabbcc","bb")aa
substring-before("aabbcc","c")aabb

+ W3C Documentation reference: String-Functions +
+
+ + + + [1.0] fn:substring-after(string, string) +
+
+ Returns the substring found after the first occurrence of the second argument
+ Arguments and return type: + + + + + + + + + + + + + +
TypeDescription
stringString to be searched
stringString to be used to split
Examples:
+ + + + + + + + + + + + + +
ExpressionResult
substring-after("aabbcc","bb")cc
substring-after("aabbcc","a")abbcc

+ W3C Documentation reference: String-Functions +
+
+ + + + [1.0] fn:substring(string, number, number) +
+
+ Returns the substring starting at second argument with lenght of third argument
+ Arguments and return type: + + + + + + + + + + + + + + + + + +
TypeDescription
stringString to be cut
integerStarting position
integerLength of the substring
Examples:
+ + + + + + + + + +
ExpressionResult
substring("aabbcc", 1, 2)aa

+ W3C Documentation reference: String-Functions +
+
+ + + + [1.0] fn:substring(string, number) +
+
+ Returns the substring of the first argument from the position specified by the second + argument
+ Arguments and return type: + + + + + + + + + + + + + +
TypeDescription
stringString to be cut
integerStarting position
Examples:
+ + + + + + + + + +
ExpressionResult
substring("aabbcc", 3)bbcc

+ W3C Documentation reference: String-Functions +
+
+ + + + [1.0] fn:string-length(string) +
+
+ Returns the length of the string specified by the argument
+ Arguments and return type: + + + + + + + + + +
TypeDescription
stringString of which length should be returned
Examples:
+ + + + + + + + + + + + + +
ExpressionResult
string-length("aabbcc")6
string-length("aa bb cc")8

+ W3C Documentation reference: String-Functions +
+
+ + + + [1.0] fn:string-length() +
+
+ Returns the length of the string specified by the context node
+
+ W3C Documentation reference: String-Functions +
+
+ + + + [1.0] fn:normalize-space(string) +
+
+ Returns a white-space normalized string
+ Arguments and return type: + + + + + + + + + +
TypeDescription
stringString to be normalized
Examples:
+ + + + + + + + + + + + + +
ExpressionResult
normalize-space("aa bb cc")aa bb cc
normalize-space("aa bb cc")aa bb cc

+ W3C Documentation reference: String-Functions +
+
+ + + + [1.0] fn:normalize-space() +
+
+ Returns a white-space normalized string specified by the context-node
+
+ W3C Documentation reference: String-Functions +
+
+ + + + [1.0] fn:translate(string, string, string) +
+
+ Replaces characters specified by the second argument using those from the third argument +
+ Arguments and return type: + + + + + + + + + + + + + + + + + +
TypeDescription
stringString to be edited
stringsequence of characters to be replaced
stringsequence of character to be used in replacement
Examples:
+ + + + + + + + + + + + + +
ExpressionResult
translate("aabbcc", "ab","xz")xxzzcc
translate("Test sequence", "e","z")Tzst szquzncz

+ W3C Documentation reference: String-Functions +
+
+ + + + [2.0] fn:string-join((string,string,...),sep) +
+
+ Returns a string created by concatenating the string arguments and using the sep + argument as the separator
+ Arguments and return type: + + + + + + + + + + + + + +
TypeDescription
string*string sequence to be joined
stringseparator to be used
Examples:
+ + + + + + + + + + + + + +
ExpressionResult
string-join(('fox', 'jumps', 'over', 'dog'), ' ')' fox jumps over dog '
string-join(('fox', 'jumps', 'over', 'dog'))'joxjumpsoverdog'

+ W3C Documentation reference: #func-string-join +
+
+
+ + + [3.0] fn:string-to-codepoints(string) +
+
+ Returns sequence of unicode codepoint representing the provided string
+ Arguments and return type: + + + + + + + + + +
TypeDescription
stringstring to be coverted to list of unicode values
Examples:
+ + + + + + + + + +
ExpressionResult
string-to-codepoints("test")(116, 101, 115, 116)

+ W3C Documentation reference: #func-string-to-codepoints +
+
+
+ + + [2.0] fn:compare(comp1,comp2) +
+
+ Returns -1 if comp1 is less than comp2, 0 if comp1 is equal to comp2, or 1 if comp1 + is greater than comp2 (according to the rules of the collation that is used)
+ Arguments and return type: + + + + + + + + + + + + + +
TypeDescription
stringfirst parameter to be compared
stringsecond parameter to be compared
Examples:
+ + + + + + + + + + + + + + + + + + + + + +
ExpressionResult
compare('abc', 'abc')0
compare('abc', 'abd')-1
compare('abc1', 'abd')-1
compare("abc1","abc")1

+ W3C Documentation reference: #func-compare +
+
+
+ + + [2.0] fn:compare(comp1,comp2,collation) +
+
+ Returns -1 if comp1 is less than comp2, 0 if comp1 is equal to comp2, or 1 if comp1 + is greater than comp2 (according to the rules of the collation that is used)
+ Arguments and return type: + + + + + + + + + + + + + + + + + +
TypeDescription
stringfirst parameter to be compared
stringsecond parameter to be compared
stringcollation to be used in comparison(letter weight may differ between + languages)
Examples:
+ + + + + + + + + +
ExpressionResult
compare('ghi', 'ghi')0

+ W3C Documentation reference: #func-compare +
+
+
+ + + [2.0] fn:codepoints-to-string((int,int,...)) +
+
+ Creates a string from a sequence of the Unicode Standard code points
+ Arguments and return type: + + + + + + + + + +
TypeDescription
int*int sequence to be converted to string
Examples:
+ + + + + + + + + +
ExpressionResult
codepoints-to-string((116, 101, 115, 116))'test'

+ W3C Documentation reference: #func-codepoints-to-string +
+
+
+ + + [2.0] fn:codepoint-equal(comp1,comp2) +
+
+ Returns true if the value of comp1 is equal to the value of comp2, according to the + Unicode code point collation + (http://www.w3.org/2005/02/xpath-functions/collation/codepoint), otherwise it + returns false
+ Arguments and return type: + + + + + + + + + + + + + +
TypeDescription
intunicode codepoint
intunicode codepoint
Examples:
+ + + + + + + + + + + + + + + + + +
ExpressionResult
codepoint-equal(111, 111)true
codepoint-equal(111, 112)false
codepoint-equal("111F", "111F")true

+ W3C Documentation reference: #func-codepoint-equal +
+
+
+ + + [2.0] fn:normalize-unicode() +
+
+ NONE
+
+ W3C Documentation reference: #func-normalize-unicode +
+
+
+ + + [2.0] fn:upper-case(string) +
+
+ Converts the string argument to upper-case
+ Arguments and return type: + + + + + + + + + +
TypeDescription
stringstring to be converted to upper case
Examples:
+ + + + + + + + + +
ExpressionResult
upper-case('aabbCC')'AABBCC'

+ W3C Documentation reference: #func-upper-case +
+
+
+ + + [2.0] fn:lower-case(string) +
+
+ Converts the string argument to lower-case
+ Arguments and return type: + + + + + + + + + +
TypeDescription
stringstring to be converted to upper case
Examples:
+ + + + + + + + + +
ExpressionResult
lower-case('aabbCC')'aabbcc'

+ W3C Documentation reference: #func-lower-case +
+
+
+ + + [2.0] fn:escape-uri(stringURI,esc-res) +
+
+ https://www.w3.org/TR/xpath-functions/#func-escape-uri
+
+ W3C Documentation reference: #func-escape-uri +
+
+
+ + + [2.0] fn:tokenize(string,pattern) +
+
+ https://www.w3.org/TR/xpath-functions/#func-tokenize
+ Arguments and return type: + + + + + + + + + + + + + +
TypeDescription
stringstring to be tokenized
stringstring to be used to split the first argument
Examples:
+ + + + + + + + + +
ExpressionResult
tokenize("fox jumps over dog", "s+")("fox", "jumps", "over", "dog")

+ W3C Documentation reference: #func-tokenize +
+
+
+ + + [2.0] fn:matches(string,pattern) +
+
+ Returns true if the string argument matches the pattern, otherwise, it returns false +
+ Arguments and return type: + + + + + + + + + + + + + +
TypeDescription
stringstring to search in
stringpattern to be found
Examples:
+ + + + + + + + + + + + + +
ExpressionResult
matches("Xpath", "pat")true
matches("Xpath", "abc")false

+ W3C Documentation reference: #func-matches +
+
+
+ + + [2.0] fn:replace(string,pattern,replace) +
+
+ Returns a string that is created by replacing the given pattern with the replace + argument
+
+ W3C Documentation reference: #func-replace +
+
+
+ + + [2.0] fn:ends-with(string1,string2) +
+
+ Returns true if string1 ends with string2, otherwise it returns false
+
+ W3C Documentation reference: #func-ends-with +
+
+
+ + +
+
+
+ +
+ + + [2.0] fn:avg((arg,arg,...)) +
+
+ Returns the average of the argument values
+ Arguments and return type: + + + + + + + + + +
TypeDescription
sequence*returns average value of provided elements
Examples:
+ + + + + + + + + +
ExpressionResult
avg((1,2,3))2

+ W3C Documentation reference: #func-avg +
+
+
+ + + [2.0] fn:exactly-one(item,item,...) +
+
+ Returns the argument if it contains exactly one item, otherwise it raises an error +
+ Arguments and return type: + + + + + + + + + +
TypeDescription
sequencesequence to check
Examples:
+ + + + + + + + + + + + + +
ExpressionResult
exactly-one((1))1
exactly-one((1,1))fn:exactly-one called with a sequence containing zero or more than one + item.

+ W3C Documentation reference: #func-exactly-one +
+
+
+ + + [2.0] fn:zero-or-one(item,item,...) +
+
+ Returns the argument if it contains zero or one items, otherwise it raises an error +
+
+ W3C Documentation reference: #func-zero-or-one +
+
+
+ + + [2.0] fn:index-of((item,item,...),searchitem) +
+
+ Returns the positions within the sequence of items that are equal to the searchitem + argument
+
+ W3C Documentation reference: #func-index-of +
+
+
+ + + [2.0] fn:reverse((item,item,...)) +
+
+ Returns the reversed order of the items specified
+ Arguments and return type: + + + + + + + + + +
TypeDescription
sequence*sequence of elements to have its order reversed
Examples:
+ + + + + + + + + + + + + +
ExpressionResult
reverse(("ab", "cd", "ef"))("ef", "cd", "ab")
reverse(("ab"))("ab")

+ W3C Documentation reference: #func-reverse +
+
+
+ + + [2.0] fn:one-or-more(item,item,...) +
+
+ Returns the argument if it contains one or more items, otherwise it raises an error +
+ Arguments and return type: + + + + + + + + + +
TypeDescription
sequencesequence to check
Examples:
+ + + + + + + + + + + + + +
ExpressionResult
one-or-more((1, 2, 3))1 2 3
one-or-more()An empty sequence is not allowed as the first argument of + fn:one-or-more()

+ W3C Documentation reference: #func-one-or-more +
+
+
+ + + [2.0] fn:distinct-values((item,item,...),collation) +
+
+ Returns only distinct (different) values
+ Arguments and return type: + + + + + + + + + +
TypeDescription
sequencesequence to extract distinct values from
Examples:
+ + + + + + + + + +
ExpressionResult
distinct-values((1, 2, 3, 1, 2))(1, 2, 3)

+ W3C Documentation reference: #func-distinct-values +
+
+
+ + + [2.0] fn:exists(item,item,...) +
+
+ Returns true if the value of the arguments IS NOT an empty sequence, otherwise it + returns false
+
+ W3C Documentation reference: #func-exists +
+
+
+ + + [2.0] fn:subsequence((item,item,...),start,len) +
+
+ Returns a sequence of items from the position specified by the start argument and + continuing for the number of items specified by the len argument. The first item is + located at position 1
+
+ W3C Documentation reference: #func-subsequence +
+
+
+ + + [2.0] fn:empty(item,item,...) +
+
+ Returns true if the value of the arguments IS an empty sequence, otherwise it + returns false
+
+ W3C Documentation reference: #func-empty +
+
+
+ + + [2.0] fn:insert-before((item,item,...),pos,inserts) +
+
+ Returns a new sequence constructed from the value of the item arguments
+
+ W3C Documentation reference: #func-insert-before +
+
+
+ + + [2.0] fn:remove((item,item,...),position) +
+
+ Returns a new sequence constructed from the value of the item arguments
+ Arguments and return type: + + + + + + + + + + + + + +
TypeDescription
sequence*sequence to be modified
integerposition to insert element from
Examples:
+ + + + + + + + + + + + + +
ExpressionResult
remove(("a","b","c"), 1)b c
remove(("a","b","c"), 0)a b c

+ W3C Documentation reference: #func-remove +
+
+
+ + + [2.0] fn:unordered((item,item,...)) +
+
+ Returns the items in an implementation dependent order
+
+ W3C Documentation reference: #func-unordered +
+
+
+ + + [2.0] fn:data(item.item,...) +
+
+ Takes a sequence of items and returns a sequence of atomic values
+ Arguments and return type: + + + + + + + + + +
TypeDescription
sequence*sequence to be split to atomic values
Examples:
+ + + + + + + + + +
ExpressionResult
data((1,2,23, "test"))1 2 23 test

+ W3C Documentation reference: #func-data +
+
+
+ + + [2.0] fn:collection() +
+
+ NONE
+
+ W3C Documentation reference: #func-collection +
+
+
+ + + [2.0] fn:collection(string) +
+
+ NONE
+
+ W3C Documentation reference: #func-collection +
+
+
+ + + [2.0] fn:min((arg,arg,...)) +
+
+ Returns the argument that is less than the others
+ Arguments and return type: + + + + + + + + + +
TypeDescription
sequence*sequence to select minimum from
Examples:
+ + + + + + + + + + + + + +
ExpressionResult
min((1,2,3))1
min(('a', 'k'))'a'

+ W3C Documentation reference: #func-min +
+
+
+ + + [2.0] fn:max((arg,arg,...)) +
+
+ Returns the argument that is greater than the others
+ Arguments and return type: + + + + + + + + + +
TypeDescription
sequence*sequence to select maximum from
Examples:
+ + + + + + + + + + + + + +
ExpressionResult
max((1,2,3))3
max(('a', 'k'))'k'

+ W3C Documentation reference: #func-max +
+
+
+ + + [2.0] fn:deep-equal(param1,param2,collation) +
+
+ Returns true if param1 and param2 are deep-equal to each other, otherwise it returns + false
+
+ W3C Documentation reference: #func-deep-equal +
+
+
+ + +
+
+
+ +
+ + + [2.0] fn:adjust-date-to-timezone(date,timezone) +
+
+ If the timezone argument is empty, it returns a date without a timezone. Otherwise, + it returns a date with a timezone
+ Arguments and return type: + + + + + + + + + + + + + +
TypeDescription
datedate to be adjusted
timezonetimezone to be imposed into date
Examples:
+ + + + + + + + + +
ExpressionResult
adjust-date-to-timezone(xs:date('2011-11-15'), + xs:dayTimeDuration("PT10H"))2011-11-15+10:00

+ W3C Documentation reference: #func-adjust-date-to-timezone +
+
+
+ + + [2.0] fn:adjust-time-to-timezone(time,timezone) +
+
+ If the timezone argument is empty, it returns a time without a timezone. Otherwise, + it returns a time with a timezone
+
+ W3C Documentation reference: #func-adjust-time-to-timezone +
+
+
+ + + [2.0] fn:implicit-timezone() +
+
+ Returns the value of the implicit timezone
+ Examples:
+ + + + + + + + + +
ExpressionResult
implicit-timezone()PT1H

+ W3C Documentation reference: #func-implicit-timezone +
+
+
+ + + [2.0] fn:dateTime(date,time) +
+
+ Converts the arguments to a date and a time
+ Arguments and return type: + + + + + + + + + + + + + +
TypeDescription
datedate to be merged into dateTime
timetime to be merged into dateTime
Examples:
+ + + + + + + + + +
ExpressionResult
dateTime(xs:date("2011-11-15"), xs:time("10:22:00"))2011-11-15T10:22:00

+ W3C Documentation reference: #func-dateTime +
+
+
+ + + [2.0] fn:current-time() +
+
+ Returns the current time (with timezone)
+ Examples:
+ + + + + + + + + +
ExpressionResult
current-time()11:48:04.393361+01:00

+ W3C Documentation reference: #func-current-time +
+
+
+ + + [2.0] fn:timezone-from-time(time) +
+
+ Returns the time zone component of the argument if any
+ Arguments and return type: + + + + + + + + + +
TypeDescription
timetime to extract timezone infromation from
Examples:
+ + + + + + + + + +
ExpressionResult
timezone-from-time(xs:time("10:22:00+10:00"))PT10H

+ W3C Documentation reference: #func-timezone-from-time +
+
+
+ + + [2.0] fn:hours-from-time(time) +
+
+ Returns an integer that represents the hours component in the localized value of the + argument
+ Arguments and return type: + + + + + + + + + +
TypeDescription
timetime to extact hours component from
Examples:
+ + + + + + + + + +
ExpressionResult
hours-from-time(xs:time("10:22:00"))10

+ W3C Documentation reference: #func-hours-from-time +
+
+
+ + + [2.0] fn:minutes-from-time(time) +
+
+ Returns an integer that represents the minutes component in the localized value of + the argument
+ Arguments and return type: + + + + + + + + + +
TypeDescription
timetime to extract minutes component from
Examples:
+ + + + + + + + + +
ExpressionResult
minutes-from-time(xs:time("10:22:00"))22

+ W3C Documentation reference: #func-minutes-from-time +
+
+
+ + + [2.0] fn:seconds-from-time(time) +
+
+ Returns an integer that represents the seconds component in the localized value of + the argument
+ Arguments and return type: + + + + + + + + + +
TypeDescription
timeTime to convert to seconds
Examples:
+ + + + + + + + + +
ExpressionResult
seconds-from-time(xs:time("10:22:00"))0

+ W3C Documentation reference: #func-seconds-from-time +
+
+
+ + + [2.0] fn:years-from-duration(datetimedur) +
+
+ Returns an integer that represents the years component in the canonical lexical + representation of the value of the argument
+ Arguments and return type: + + + + + + + + + +
TypeDescription
datetimedurdatetimedur to extract years component from
Examples:
+ + + + + + + + + +
ExpressionResult
years-from-duration(xs:duration("P5Y2DT10H59M"))5

+ W3C Documentation reference: #func-years-from-duration +
+
+
+ + + [2.0] fn:months-from-duration(datetimedur) +
+
+ Returns an integer that represents the months component in the canonical lexical + representation of the value of the argument
+ Arguments and return type: + + + + + + + + + +
TypeDescription
datetimedurdatetimedur to extract months component from
Examples:
+ + + + + + + + + +
ExpressionResult
months-from-duration(xs:duration("P5Y10M2DT10H59M"))10

+ W3C Documentation reference: #func-years-from-duration +
+
+
+ + + [2.0] fn:days-from-duration(datetimedur) +
+
+ Returns an integer that represents the days component in the canonical lexical + representation of the value of the argument
+ Arguments and return type: + + + + + + + + + +
TypeDescription
datetimedurdatetimedur to extract days component from
Examples:
+ + + + + + + + + +
ExpressionResult
days-from-duration(xs:duration("P5Y2DT10H59M"))2

+ W3C Documentation reference: #func-days-from-duration +
+
+
+ + + [2.0] fn:hours-from-duration(datetimedur) +
+
+ Returns an integer that represents the hours component in the canonical lexical + representation of the value of the argument
+ Arguments and return type: + + + + + + + + + +
TypeDescription
datetimedurdatetimedur to extract hours component from
Examples:
+ + + + + + + + + +
ExpressionResult
hours-from-duration(xs:duration("P5Y2DT10H59M"))10

+ W3C Documentation reference: #func-hours-from-duration +
+
+
+ + + [2.0] fn:minutes-from-duration(datetimedur) +
+
+ Returns an integer that represents the minutes component in the canonical lexical + representation of the value of the argument
+ Arguments and return type: + + + + + + + + + +
TypeDescription
datetimedurdatetimedur to extract minute component from
Examples:
+ + + + + + + + + +
ExpressionResult
years-from-duration(xs:duration("P5Y2DT10H59M"))59

+ W3C Documentation reference: #func-minutes-from-duration +
+
+
+ + + [2.0] fn:seconds-from-duration(datetimedur) +
+
+ Returns a decimal that represents the seconds component in the canonical lexical + representation of the value of the argument
+ Arguments and return type: + + + + + + + + + +
TypeDescription
datetimedurdatetimedur to extract seconds component from
Examples:
+ + + + + + + + + +
ExpressionResult
days-from-duration(xs:duration("P5Y2DT10H59M40S"))40

+ W3C Documentation reference: #func-seconds-from-duration +
+
+
+ + + [2.0] fn:current-date() +
+
+ Returns the current date (with timezone)
+
+ W3C Documentation reference: #func-current-date +
+
+
+ + + [2.0] fn:timezone-from-date(date) +
+
+ Returns the time zone component of the argument if any
+ Arguments and return type: + + + + + + + + + +
TypeDescription
datedate to extract timezone information from
Examples:
+ + + + + + + + + + + + + +
ExpressionResult
timezone-from-date(xs:date("2011-11-15+11:00"))PT1H
timezone-from-date(xs:date("2011-11-15+11:00"))PT11H

+ W3C Documentation reference: #func-timezone-from-date +
+
+
+ + + [2.0] fn:year-from-date(date) +
+
+ Returns an integer that represents the year in the localized value of the argument +
+ Arguments and return type: + + + + + + + + + +
TypeDescription
datedate to extract years component from
Examples:
+ + + + + + + + + +
ExpressionResult
year-from-date(xs:date("2011-11-15"))2011

+ W3C Documentation reference: #func-year-from-date +
+
+
+ + + [2.0] fn:month-from-date(date) +
+
+ Returns an integer that represents the month in the localized value of the argument +
+ Arguments and return type: + + + + + + + + + +
TypeDescription
dateDate to extrat the month from
Examples:
+ + + + + + + + + +
ExpressionResult
month-from-date(xs:date("2011-11-15"))11

+ W3C Documentation reference: #func-month-from-date +
+
+
+ + + [2.0] fn:day-from-date(date) +
+
+ Returns an integer that represents the day in the localized value of the argument +
+ Arguments and return type: + + + + + + + + + +
TypeDescription
datedate to extact day component from
Examples:
+ + + + + + + + + +
ExpressionResult
day-from-date(xs:date("2011-04-23"))23

+ W3C Documentation reference: #func-day-from-date +
+
+
+ + + [2.0] fn:current-dateTime() +
+
+ Returns the current dateTime (with timezone)
+ Examples:
+ + + + + + + + + +
ExpressionResult
current-dateTime()2021-03-24T18:15:09.808+01:00

+ W3C Documentation reference: #func-current-dateTime +
+
+
+ + + [2.0] fn:timezone-from-dateTime(datetime) +
+
+ Returns the time zone component of the argument if any
+ Arguments and return type: + + + + + + + + + +
TypeDescription
datetimeDateTime to extract fimezone information from
Examples:
+ + + + + + + + + +
ExpressionResult
timezone-from-dateTime(xs:dateTime("2021-01-15T12:10:00-03:00"))-PT3H

+ W3C Documentation reference: #func-timezone-from-dateTime +
+
+
+ + + [2.0] fn:year-from-dateTime(datetime) +
+
+ Returns an integer that represents the year component in the localized value of the + argument
+ Arguments and return type: + + + + + + + + + +
TypeDescription
datetimedatetime to extract years component from
Examples:
+ + + + + + + + + +
ExpressionResult
year-from-dateTime(xs:dateTime("2011-11-15T12:30-04:10"))2011

+ W3C Documentation reference: #func-year-from-dateTime +
+
+
+ + + [2.0] fn:month-from-dateTime(datetime) +
+
+ Returns an integer that represents the month component in the localized value of the + argument
+ Arguments and return type: + + + + + + + + + +
TypeDescription
datetimedatetime to extract month component from
Examples:
+ + + + + + + + + +
ExpressionResult
month-from-dateTime(xs:dateTime("2011-11-15T12:30-04:10"))11

+ W3C Documentation reference: #func-month-from-dateTime +
+
+
+ + + [2.0] fn:day-from-dateTime(datetime) +
+
+ Returns an integer that represents the day component in the localized value of the + argument
+ Arguments and return type: + + + + + + + + + +
TypeDescription
datetimedatetime to extract day component from
Examples:
+ + + + + + + + + +
ExpressionResult
day-from-dateTime(xs:dateTime("2011-11-15T12:30-04:10"))15

+ W3C Documentation reference: #func-day-from-dateTime +
+
+
+ + + [2.0] fn:hours-from-dateTime(datetime) +
+
+ Returns an integer that represents the hours component in the localized value of the + argument
+ Arguments and return type: + + + + + + + + + +
TypeDescription
datetimedatetime to extract hours component from
Examples:
+ + + + + + + + + +
ExpressionResult
hours-from-dateTime(xs:dateTime("2011-11-15T12:30-04:10"))12

+ W3C Documentation reference: #func-hours-from-dateTime +
+
+
+ + + [2.0] fn:minutes-from-dateTime(datetime) +
+
+ Returns an integer that represents the minutes component in the localized value of + the argument
+ Arguments and return type: + + + + + + + + + +
TypeDescription
datetimedatetime to extract minutes component from
Examples:
+ + + + + + + + + +
ExpressionResult
minutes-from-dateTime(xs:dateTime("2011-11-15T12:30-04:10"))30

+ W3C Documentation reference: #func-minutes-from-dateTime +
+
+
+ + + [2.0] fn:seconds-from-dateTime(datetime) +
+
+ Returns a decimal that represents the seconds component in the localized value of + the argument
+ Arguments and return type: + + + + + + + + + +
TypeDescription
datetimedatetime to extract seconds component from
Examples:
+ + + + + + + + + +
ExpressionResult
seconds-from-dateTime(xs:dateTime("2011-11-15T12:30:00-04:10"))0

+ W3C Documentation reference: #func-seconds-from-dateTime +
+
+
+ + + [2.0] fn:adjust-dateTime-to-timezone(datetime,timezone) +
+
+ If the timezone argument is empty, it returns a dateTime without a timezone. + Otherwise, it returns a dateTime with a timezone
+ Arguments and return type: + + + + + + + + + + + + + +
TypeDescription
datetimedatetime to be adjusted
timezonetimezone to be used in provided date
Examples:
+ + + + + + + + + +
ExpressionResult
adjust-dateTime-to-timezone(xs:dateTime('2011-11-15T12:30:00-04:10'), + xs:dayTimeDuration("PT10H"))2011-11-16T02:40:00+10:00

+ W3C Documentation reference: #func-adjust-dateTime-to-timezone +
+
+
+ + +
+
+
+ +
+ + + [2.0] fn:error() +
+
+ https://www.w3.org/TR/xpath-functions/#func-error
+
+ W3C Documentation reference: #func-error +
+
+
+ + + [2.0] fn:error(error) +
+
+ https://www.w3.org/TR/xpath-functions/#func-error
+
+ W3C Documentation reference: #func-error +
+
+
+ + + [2.0] fn:error(error,description) +
+
+ https://www.w3.org/TR/xpath-functions/#func-error
+
+ W3C Documentation reference: #func-error +
+
+
+ + + [2.0] fn:error(error,description,error-object) +
+
+ https://www.w3.org/TR/xpath-functions/#func-error
+
+ W3C Documentation reference: #func-error +
+
+
+ + + [2.0] fn:trace(value,label) +
+
+ Used to debug queries
+
+ W3C Documentation reference: #func-trace +
+
+
+ + +
+
+
+ +
+ + + [2.0] fn:nilled(node) +
+
+ Returns a Boolean value indicating whether the argument node is nilled
+
+ W3C Documentation reference: #func-nilled +
+
+
+ + + [2.0] fn:namespace-uri-from-QName() +
+
+ NONE
+
+ W3C Documentation reference: #func-namespace-uri-from-QName +
+
+
+ + + [2.0] fn:base-uri() +
+
+ Returns the value of the base-uri property of the current or specified node
+
+ W3C Documentation reference: #func-base-uri +
+
+
+ + + [2.0] fn:base-uri(node) +
+
+ Returns the value of the base-uri property of the current or specified node
+
+ W3C Documentation reference: #func-base-uri +
+
+
+ + + [2.0] fn:static-base-uri() +
+
+ Returns the value of the base-uri
+ Examples:
+ + + + + + + + + +
ExpressionResult
default-collation()http://www.w3.org/2005/xpath-functions/collation/codepoint

+ W3C Documentation reference: #func-static-base-uri +
+
+
+ + + [2.0] fn:doc-available(URI) +
+
+ Returns true if the doc() function returns a document node, otherwise it returns + false
+
+ W3C Documentation reference: #func-doc-available +
+
+
+ + + [2.0] fn:resolve-QName() +
+
+ NONE
+
+ W3C Documentation reference: #func-resolve-QName +
+
+
+ + + [2.0] fn:node-name(node) +
+
+ Returns the node-name of the argument node
+
+ W3C Documentation reference: #func-node-name +
+
+
+ + + [2.0] fn:default-collation() +
+
+ Returns the value of the default collation
+
+ W3C Documentation reference: #func-default-collation +
+
+
+ + + [2.0] fn:idref((string,string,...),node) +
+
+ Returns a sequence of element or attribute nodes that have an IDREF value equal to + the value of one or more of the values specified in the string argument
+
+ W3C Documentation reference: #func-idref +
+
+
+ + + [2.0] fn:document-uri(node) +
+
+ Returns the value of the document-uri property for the specified node
+
+ W3C Documentation reference: #func-document-uri +
+
+
+ + + [2.0] fn:local-name-from-QName() +
+
+ NONE
+
+ W3C Documentation reference: #func-local-name-from-QName +
+
+
+ + + [2.0] fn:in-scope-prefixes() +
+
+ NONE
+
+ W3C Documentation reference: #func-in-scope-prefixes +
+
+
+ + + [2.0] fn:namespace-uri-for-prefix() +
+
+ NONE
+
+ W3C Documentation reference: #func-namespace-uri-for-prefix +
+
+
+ + + [2.0] fn:QName() +
+
+ NONE
+
+ W3C Documentation reference: #func-QName +
+
+
+ + + [2.0] fn:root() fn:root(node) +
+
+ Returns the root of the tree to which the current node or the specified belongs. + This will usually be a document node
+
+ W3C Documentation reference: #func-root +
+
+
+ + + [2.0] fn:doc(URI) +
+
+ NONE
+
+ W3C Documentation reference: #func-doc +
+
+
+ + + [2.0] fn:resolve-uri(relative,base) +
+
+ NONE
+
+ W3C Documentation reference: #func-resolve-uri +
+
+
+ + + [3.0] fn:available-environment-variables() +
+
+ Returns a list of environment variable names
+
+ W3C Documentation reference: #func-available-environment-variables +
+
+
+ + + [3.0] fn:doc-available(uri) +
+
+ The function returns true the function call fn:doc(uri) would return a document node +
+
+ W3C Documentation reference: #func-doc-available +
+
+
+ + + [3.0] fn:element-with-id() +
+
+ https://www.w3.org/TR/xpath-functions-31/#func-element-with-id
+
+ W3C Documentation reference: #func-element-with-id +
+
+
+ + + [3.0] fn:encode-for-uri(uri-part) +
+
+ Encodes reserved characters in a string that is intended to be used in the path + segment of a URI.
+
+ W3C Documentation reference: #func-encode-for-uri +
+
+
+ + + [3.0] fn:environment-variable(name) +
+
+ Returns the value of a system environment variable, if it exists
+
+ W3C Documentation reference: #func-environment-variable +
+
+
+ + + [3.0] fn:escape-html-uri(uri) +
+
+ Escapes a URI in the same way that HTML user agents handle attribute values expected + to contain URIs
+
+ W3C Documentation reference: #func-escape-html-uri +
+
+
+ + + [3.0] fn:iri-to-uri(iri) +
+
+ Converts a string containing an IRI into a URI
+
+ W3C Documentation reference: #func-iri-to-uri +
+
+
+ + +
+
+
+ +
+ + + [3.0] fn:for-each(sequence*, function) +
+
+ Applies function item to every element in sequence
+
+ W3C Documentation reference: #func-for-each +
+
+
+ + + [3.0] fn:for-each-pair(sequence*, sequence*, function) +
+
+ Applies the function to consecutive pairs of elements taken from sequences
+
+ W3C Documentation reference: #func-for-each-pair +
+
+
+ + + [3.0] fn:fold-left(sequence*, baseValue, function) +
+
+ Applies function item to every element in sequence, accumulating value
+
+ W3C Documentation reference: #func-fold-left +
+
+
+ + + [3.0] fn:fold-right() +
+
+ Applies function item to every element in sequence, accumulating value
+
+ W3C Documentation reference: #func-fold-right +
+
+
+ + + [3.0] fn:filter(sequence*, function) +
+
+ Returns those items from the sequence for which the supplied function returns true
+
+ W3C Documentation reference: #func-filter +
+
+
+ +
+ + +
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Frontend/xsd.html b/Frontend/xsd.html new file mode 100644 index 0000000..670eb95 --- /dev/null +++ b/Frontend/xsd.html @@ -0,0 +1,171 @@ + + + + + + + + + + + +
+
+
+
+

Online XSD tester v0.4 BETA +

+
+ + + +
+ + + +

+ + + +
+ +

+ + + + +
+
+
+

What is XSD?

+

XSD is a W3C recomedation that specifies how to describe the elements in XML document

+

XSD specifies data types, order and arity of elements in XML file.
+ Main components of XSD file are:
+ - Element declaration - declares properties of elements (names and namespaces)
+ - Attribute declarations - declares properties of attributes
+ - Simple and complex types:
+ - - XSD provides 19 simple data types
+ - - More complex types are declared using simple types and relationships
+

+
+ + + +
+ + + + + + + + + + + + + + \ No newline at end of file diff --git a/Frontend/xslt (copy).html b/Frontend/xslt (copy).html new file mode 100644 index 0000000..876e79f --- /dev/null +++ b/Frontend/xslt (copy).html @@ -0,0 +1,540 @@ + + + + + + + + + + +
+
+
+
+

Online XSLT tester v0.4

+
+ + + procInfo
+
+ + + +

+ + + +
+ +

+ + + + +
+
+
+

What is XSLT?

+

XSLT is a language for transforming XML documents into other documents such as XML, HTML and many + other.

+ +
+ +
+

XSLT 2.0 introduced a host of new features:
+ - Strong typing and all XSD types
+ - The ability to define and write own functions
+ - node-set() - replaces XSLT's 1.0 Result Tree Fragment, creating fully functional tree
+ - New functions and operators:
+ - - XPath 2.0
+ - - String processing and regular expressions
+ - - Grouping (for-each-group function) + - - String processing
+ - - Sequence type
+

+

XSLT 3.0 further improved the formula:
+ - Streaming tranformations (previously file had to be loaded to memory to be processed)
+ - Packages - improve the modularity of large stylesheets
+ - Improved error handling (for example <xsl:try>)
+ - Support for maps and arrays, enabling XSLT to handle JSON as well as XML
+ - Functions can now be arguments to other (higher-order) functions +

+
+
+ +

XSLT 1.0, 2.0 & 3.0 functions

+
+ +
+ + [v1.0] <xsl:template> - defines a set of rules to be + applied to + specified node.
+ [v1.0] <xsl:apply-templates> - applies a template rule to + the + current element or to element's child nodes.
+ [v1.0] <xsl:apply-imports> - Applies a template rule from + an + imported style sheet
+ [v1.0] <xsl:apply-templates> - Applies a template rule to + the + current element or to the current element's child nodes
+ [v1.0] <xsl:call-template> - Calls a named template + [v2.0] <xsl:next-match> - overrides another template + rule + (considers all other template rules of lower import precedence/priority)
+ [v3.0] <xsl:mode> - Allows properties of a mode to be + defined
+ [v3.0] <xsl:override> - Allows using package to + override + selected components from a used package
+ [v3.0] <xsl:package> - Defines a set of stylesheet + modules + that can be compiled as a unit
+ [v3.0] <xsl:accept> - Allows a package to restrict the + visibility of components exposed by a package
+ [v3.0] <xsl:global-context-item> - Declares whether a + global context item is required, and if so, to declare its required type +
+
+
+ +
+ [v1.0] <xsl:for-each> - Loops through each node in a + specified + node set
+ [v1.0] <xsl:if> - Contains a template that will be applied + only if a specified condition is true
+ [v1.0] <xsl:choose> - Used in conjunction with <when> + and + <otherwise> to express multiple conditional tests
+ [v1.0] <xsl:when> - Specifies an action for the + <choose> element
+ [v1.0] <xsl:otherwise> - Specifies a default + action for the <choose> element
+ [v2.0] <xsl:for-each-group> - Groups + elements and performs operations once for each group
+ [v3.0] <xsl:iterate> - Used to iterate + over a sequence, with the option to set parameters for use in the next + iteration
+ [v3.0] <xsl:break> - Causes premature + completion before the entire input sequence has been processed
+ [v3.0] <xsl:next-iteration> - The + contents + are a set of xsl:with-param elements defining the values of the iteration + parameters to be used on the next iteration
+ [v3.0] <xsl:on-completion> - Defines + processing to be carried out when the input sequence is exhausted
+ [v3.0] <xsl:fork> - The result of the + xsl:fork instruction is the sequence formed by concatenating the results of + evaluating each of its contained instructions, in order
+ [v3.0] <xsl:on-empty> - Outputs the + enclosed content only if the containing sequence generates no "ordinary" + content
+ [v3.0] <xsl:on-non-empty> - Outputs the + enclosed content only if the containing sequence also generates "ordinary" + content
+ [v3.0] <xsl:try> - Allows recovery from + dynamic errors occurring within the expression it wraps
+ [v3.0] <xsl:catch> - In conjunction + with + xsl:try, handles dynamic errors
+ [v3.0] <xsl:context-item> - Used to + declare + the initial context item for a template
+
+
+
+ +
+ [v1.0] <xsl:attribute> - Adds an attribute
+ [v1.0] <xsl:attribute-set> - Defines a named set of + attributes
+ [v1.0] <xsl:copy> - Creates a copy of the current node + (without + child nodes and attributes)
+ [v1.0] <xsl:number> - Determines the integer position of + the + current node and formats a number
+ [v1.0] <xsl:value-of> - Extracts the value of a selected + node
+ [v1.0] <xsl:text> - Writes literal text to the output
+ [v1.0] <xsl:comment> - Creates a comment node in the result + tree
+ [v1.0] <xsl:processing-instruction> - Writes a processing + instruction to the output
+ [v1.0] <xsl:key> - + Declares a named key that can be used in the + style sheet with the key() function
+ [v1.0] <xsl:decimal-format> - Defines the characters and + symbols to be used when converting numbers into strings, with the format-number() function
+ [v1.0] <xsl:preserve-space> - Defines the elements for + which + white space should be preserved
+ [v1.0] <xsl:strip-space> - Defines the elements for which + white + space should be removed
+ [v1.0] <xsl:sort> - Sorts the output
+ [v1.0] <xsl:output> - Defines the format of the output + document
+ [v2.0] <xsl:for-each-group> - Sorts given + sequence
+ [v2.0] <xsl:result-document> - Creates a final result + tree
+ [v2.0] <xsl:character-map> - Allows a specific + character + appearing in the final result tree to be substituted by a specified string of + characters
+ [v2.0] <xsl:output-character> - Defines characters and + their replacements to be used by character-map
+ [v3.0] <xsl:merge> - Merges two or more pre-sorted + input + files
+ [v3.0] <xsl:merge-action> - Defines action to be + carried + out on each merged group
+ [v3.0] <xsl:merge-key> - Used to define the merge keys + on + which the input sequences are sorted
+ [v3.0] <xsl:merge-source> - Describes the input source + for + an xsl:merge instruction
+ + +
+
+
+ +
+ [v1.0] <xsl:stylesheet> - Defines the root element of a + style + sheet
+ [v1.0] <xsl:transform> - Defines the root element of a + style + sheet
+ [v1.0] <xsl:import> - Imports the contents of one style + sheet + into another. Note: An imported style sheet has lower precedence than the importing style + sheet
+ [v1.0] <xsl:include> - Includes the contents of one style + sheet + into another. Note: An included style sheet has the same precedence as the including style + sheet
+ [v1.0] <xsl:namespace-alias> - Replaces a namespace in the + style sheet to a different namespace in the output
+ [v1.0] <xsl:element> - Creates an element node in the + output + document
+
+
+
+ +
+ [v1.0] <xsl:param> - Declares a local or global + parameter
+ [v1.0] <xsl:variable> - Declares a local or global + variable
+ [v1.0] <xsl:with-param> - Defines the value of a parameter + to + be passed into a template
+ [v1.0] <xsl:copy-of> - Creates a copy of the current node + (with + child nodes and attributes)
+ [v2.0] <xsl:document> - Creates a new document + node
+ [v2.0] <xsl:namespace> - Creates a namespace + node
+ [v2.0] <xsl:namespace-alias> - Declares that a literal + namespace URI is being used as an alias for a target namespace URI
+ [v2.0] <xsl:sequence> - Constructs a sequence of nodes + and/or atomic values
+
+
+ +
+ +
+ [v2.0] <xsl:analyze-string> - Identifies substrings + that + match + given regex
+ [v2.0] <xsl:matching-substring> - Used in conjunction + with + analize-string, returns matching substrings
+ [v2.0] <xsl:non-matching-substring> - Used in + conjunction + with + analize-string, returns substrings that didn't match the regex +
+
+
+ +
+ +
+ [v2.0] <xsl:function> - Declares a function that + can be + called from any XPath expression in the stylesheet
+ [v3.0] <xsl:evaluate> - Allows dynamic evaluation + of + XPath + expressions from a string
+ [v3.0] <xsl:assert> - Asserts a XPath expression, + optionally throwing a dynamic error
+ +
+
+
+
+ +
+ [v1.0] <xsl:message> - Writes a message to the output (used + to + report errors)
+ [v1.0] <xsl:fallback> - Specifies an alternate code to run + if + the processor does not support an XSLT element
+ [v3.0] <xsl:map> - Used to construct a new + map
+ [v3.0] <xsl:map-entry> - Used to construct a singleton + map + (one key and one value)
+ + [v3.0] <xsl:expose> - Used to modify the visibility of + selected components within a package
+ [v3.0] <xsl:accumulator> - Defines a rule that is to be + applied while the document is being sequentially processed
+ [v3.0] <xsl:accumulator-rule> - Defines a rule for an + xsl:accumulator
+ Streaming: (not usable on this website!) + [v3.0] <xsl:source-document> - Initiates streamed or + unstreamed processing of a source document
+ [v3.0] <xsl:use-package> -
+ [v3.0] <xsl:where-populated> - Allows conditional + content + construction to be made streamable
+ Packages: (not usable on this website!) + [v3.0] <xsl:accept> - Allows a package to restrict the + visibility of components exposed by a package that it uses
+ + + + + +
+
+
+ +
+ +
+ + + + + + + + + + + + + + \ No newline at end of file diff --git a/Frontend/xslt.html b/Frontend/xslt.html new file mode 100644 index 0000000..e01ce64 --- /dev/null +++ b/Frontend/xslt.html @@ -0,0 +1,1227 @@ + + + + + + + + + + + +
+
+
+
+

Online XSLT tester v0.4

+
+ + + procInfo
+
+ + + +

+ + + +
+ +

+ + + + +
+
+
+

What is XSLT?

+

XSLT is a language for transforming XML documents into other documents such as XML, HTML and many + other.

+ +
+ +
+

XSLT 2.0 introduced a host of new features:
+ - Strong typing and all XSD types
+ - The ability to define and write own functions
+ - node-set() - replaces XSLT's 1.0 Result Tree Fragment, creating fully functional tree
+ - New functions and operators:
+ - - XPath 2.0
+ - - String processing and regular expressions
+ - - Grouping (for-each-group function) + - - String processing
+ - - Sequence type
+

+

XSLT 3.0 further improved the formula:
+ - Streaming tranformations (previously file had to be loaded to memory to be processed)
+ - Packages - improve the modularity of large stylesheets
+ - Improved error handling (for example <xsl:try>)
+ - Support for maps and arrays, enabling XSLT to handle JSON as well as XML
+ - Functions can now be arguments to other (higher-order) functions +

+
+
+ +

XSLT 1.0, 2.0 & 3.0 functions

+ + + +
+ +
+ + + [1.0] xsl:template +
+
+ defines a set of rules to be applied to specified node.
+
+ W3C Documentation reference: Defining-Template-Rules +
+
+ + + + [1.0] xsl:apply-templates +
+
+ applies a template rule to the current element or to element's child nodes.
+
+ W3C Documentation reference: Applying-Template-Rules +
+
+ + + + [1.0] xsl:apply-imports +
+
+ Applies a template rule from an imported style sheet
+
+ W3C Documentation reference: #apply-imports +
+
+ + + + [1.0] xsl:apply-templates +
+
+ Applies a template rule to the current element or to the current element's child nodes +
+
+ W3C Documentation reference: Applying-Template-Rules +
+
+ + + + [1.0] xsl:call-template +
+
+ Calls a named template
+
+ W3C Documentation reference: #named-templates +
+
+ + + + [2.0] xsl:next-match +
+
+ overrides another template rule (considers all other template rules of lower import + precedence/priority)
+
+ W3C Documentation reference: #element-next-match +
+
+
+ + + [3.0] xsl:mode +
+
+ Allows properties of a mode to be defined
+
+ W3C Documentation reference: #element-mode +
+
+
+ + + [3.0] xsl:override +
+
+ Allows using package to override selected components from a used package
+
+ W3C Documentation reference: #element-override +
+
+
+ + + [3.0] xsl:package +
+
+ Defines a set of stylesheet modules that can be compiled as a unit
+
+ W3C Documentation reference: #element-package +
+
+
+ + + [3.0] xsl:accept +
+
+ Allows a package to restrict the visibility of components exposed by a package
+
+ W3C Documentation reference: #element-accept +
+
+
+ + + [3.0] xsl:global-context-item +
+
+ Declares whether a global context item is required, and if so, to declare its + required type
+
+ W3C Documentation reference: #element-global-context-item +
+
+
+ + +
+
+
+ +
+ + + [1.0] xsl:for-each +
+
+ Loops through each node in a specified node set
+
+ W3C Documentation reference: #for-each +
+
+ + + + [1.0] xsl:if +
+
+ Contains a template that will be applied only if a specified condition is true
+
+ W3C Documentation reference: Conditional-Processing +
+
+ + + + [1.0] xsl:choose +
+
+ Used in conjunction with <
+
+ W3C Documentation reference: Conditional-Processing-with-xsl:choose +
+
+ + + + [1.0] xsl:when +
+
+ Specifies an action for the <
+
+ W3C Documentation reference: Conditional-Processing-with-xsl:choose +
+
+ + + + [1.0] xsl:otherwise +
+
+ Specifies a default action for the <
+
+ W3C Documentation reference: Conditional-Processing-with-xsl:choose +
+
+ + + + [2.0] xsl:for-each-group +
+
+ Groups elements and performs operations once for each group
+
+ W3C Documentation reference: #element-for-each-group +
+
+
+ + + [3.0] xsl:iterate +
+
+ Used to iterate over a sequence, with the option to set parameters for use in the + next iteration
+
+ W3C Documentation reference: #element-iterate +
+
+
+ + + [3.0] xsl:break +
+
+ Causes premature completion before the entire input sequence has been processed
+
+ W3C Documentation reference: #element-break +
+
+
+ + + [3.0] xsl:next-iteration +
+
+ The contents are a set of xsl:with-param elements defining the values of the + iteration parameters to be used on the next iteration
+
+ W3C Documentation reference: #element-next-iteration +
+
+
+ + + [3.0] xsl:on-completion +
+
+ Defines processing to be carried out when the input sequence is exhausted
+
+ W3C Documentation reference: #element-on-completion +
+
+
+ + + [3.0] xsl:fork +
+
+ The result of the xsl:fork instruction is the sequence formed by concatenating the + results of evaluating each of its contained instructions, in order
+
+ W3C Documentation reference: #element-fork +
+
+
+ + + [3.0] xsl:on-empty +
+
+ Outputs the enclosed content only if the containing sequence generates no "ordinary" + content
+
+ W3C Documentation reference: #element-on-empty +
+
+
+ + + [3.0] xsl:on-non-empty +
+
+ Outputs the enclosed content only if the containing sequence also generates + "ordinary" content
+
+ W3C Documentation reference: #element-on-non-empty +
+
+
+ + + [3.0] xsl:try +
+
+ Allows recovery from dynamic errors occurring within the expression it wraps
+
+ W3C Documentation reference: #element-try +
+
+
+ + + [3.0] xsl:catch +
+
+ http://www.w3.org/TR/xslt-30/#element-catchIn conjunction with xsl:try, handles + dynamic errors
+
+ W3C Documentation reference: #element-catchIn conjunction with xsl:try, handles dynamic errors +
+
+
+ + + [3.0] xsl:context-item +
+
+ Used to declare the initial context item for a template
+
+ W3C Documentation reference: #element-context-item +
+
+
+ + +
+
+
+ +
+ + + [1.0] xsl:attribute +
+
+ Adds an attribute
+
+ W3C Documentation reference: #creating-attributes +
+
+ + + + [1.0] xsl:attribute-set +
+
+ Defines a named set of attributes
+
+ W3C Documentation reference: #attribute-sets +
+
+ + + + [1.0] xsl:copy +
+
+ Creates a copy of the current node (without child nodes and attributes)
+
+ W3C Documentation reference: #copying +
+
+ + + + [1.0] xsl:number +
+
+ Determines the integer position of the current node and formats a number
+
+ W3C Documentation reference: #number +
+
+ + + + [1.0] xsl:value-of +
+
+ Extracts the value of a selected node
+
+ W3C Documentation reference: #value-of +
+
+ + + + [1.0] xsl:text +
+
+ Writes literal text to the output
+
+ W3C Documentation reference: Creating-Text +
+
+ + + + [1.0] xsl:comment +
+
+ Creates a comment node in the result tree
+
+ W3C Documentation reference: Creating-Comments +
+
+ + + + [1.0] xsl:processing-instruction +
+
+ Writes a processing instruction to the output
+
+ W3C Documentation reference: Creating-Processing-Instructions +
+
+ + + + [1.0] xsl:key +
+
+ Declares a named key that can be used in the style sheet with the key() function
+
+ W3C Documentation reference: #key +
+
+ + + + [1.0] xsl:decimal-format +
+
+ Defines the characters and symbols to be used when converting numbers into strings, with + the format-number() function
+
+ W3C Documentation reference: #format-number +
+
+ + + + [1.0] xsl:preserve-space +
+
+ Defines the elements for which white space should be preserved
+
+ W3C Documentation reference: #strip +
+
+ + + + [1.0] xsl:strip-space +
+
+ Defines the elements for which white space should be removed
+
+ W3C Documentation reference: #strip +
+
+ + + + [1.0] xsl:sort +
+
+ Sorts the output
+
+ W3C Documentation reference: #sorting +
+
+ + + + [1.0] xsl:output +
+
+ Defines the format of the output document
+
+ W3C Documentation reference: #output +
+
+ + + + [2.0] xsl:for-each-group +
+
+ Sorts given sequence
+
+ W3C Documentation reference: #element-perform-sort +
+
+
+ + + [2.0] xsl:result-document +
+
+ Creates a final result tree
+
+ W3C Documentation reference: #element-result-document +
+
+
+ + + [2.0] xsl:character-map +
+
+ Allows a specific character appearing in the final result tree to be substituted by + a specified string of characters
+
+ W3C Documentation reference: #element-character-map +
+
+
+ + + [2.0] xsl:output-character +
+
+ Defines characters and their replacements to be used by character-map
+
+ W3C Documentation reference: #element-character-map +
+
+
+ + + [3.0] xsl:merge +
+
+ Merges two or more pre-sorted input files
+
+ W3C Documentation reference: #element-merge +
+
+
+ + + [3.0] xsl:merge-action +
+
+ Defines action to be carried out on each merged group
+
+ W3C Documentation reference: #element-merge-action +
+
+
+ + + [3.0] xsl:merge-key +
+
+ Used to define the merge keys on which the input sequences are sorted
+
+ W3C Documentation reference: #element-merge-key +
+
+
+ + + [3.0] xsl:merge-source +
+
+ Describes the input source for an xsl:merge instruction
+
+ W3C Documentation reference: #element-merge-source +
+
+
+ + +
+
+
+ +
+ + + [1.0] xsl:stylesheet +
+
+ Defines the root element of a style sheet
+
+ W3C Documentation reference: #stylesheet-element +
+
+ + + + [1.0] xsl:transform +
+
+ Defines the root element of a style sheet
+
+ W3C Documentation reference: #stylesheet-element +
+
+ + + + [1.0] xsl:import +
+
+ Imports the contents of one style sheet into another. Note: An imported style sheet has + lower precedence than the importing style sheet
+
+ W3C Documentation reference: #import +
+
+ + + + [1.0] xsl:include +
+
+ Includes the contents of one style sheet into another. Note: An included style sheet has + the same precedence as the including style sheet
+
+ W3C Documentation reference: #include +
+
+ + + + [1.0] xsl:namespace-alias +
+
+ Replaces a namespace in the style sheet to a different namespace in the output
+
+ W3C Documentation reference: #literal-result-element +
+
+ + + + [1.0] xsl:element +
+
+ Creates an element node in the output document
+
+ W3C Documentation reference: Creating-Elements-with-xsl:element +
+
+ + + +
+
+
+ +
+ + + [1.0] xsl:param +
+
+ Declares a local or global parameter
+
+ W3C Documentation reference: #variables +
+
+ + + + [1.0] xsl:variable +
+
+ Declares a local or global variable
+
+ W3C Documentation reference: #variables +
+
+ + + + [1.0] xsl:with-param +
+
+ Defines the value of a parameter to be passed into a template
+
+ W3C Documentation reference: Passing-Parameters-to-Templates +
+
+ + + + [1.0] xsl:copy-of +
+
+ Creates a copy of the current node (with child nodes and attributes)
+
+ W3C Documentation reference: #copy-of +
+
+ + + + [2.0] xsl:document +
+
+ Creates a new document node
+
+ W3C Documentation reference: #element-document +
+
+
+ + + [2.0] xsl:namespace +
+
+ Creates a namespace node
+
+ W3C Documentation reference: #element-namespace +
+
+
+ + + [2.0] xsl:namespace-alias +
+
+ Declares that a literal namespace URI is being used as an alias for a target + namespace URI
+
+ W3C Documentation reference: #element-namespace-alias +
+
+
+ + + [2.0] xsl:sequence +
+
+ Constructs a sequence of nodes and/or atomic values
+
+ W3C Documentation reference: #element-sequence +
+
+
+ + +
+
+ +
+ +
+ + + [2.0] xsl:analyze-string +
+
+ Identifies substrings that match given regex
+
+ W3C Documentation reference: #element-analyze-string +
+
+
+ + + [2.0] xsl:matching-substring +
+
+ Used in conjunction with analize-string, returns matching substrings
+
+ W3C Documentation reference: #element-analyze-string +
+
+
+ + + [2.0] xsl:non-matching-substring +
+
+ Used in conjunction with analize-string, returns substrings that didn't match the regex
+
+ W3C Documentation reference: #element-analyze-string +
+
+
+ + +
+
+ +
+ +
+ + + [2.0] xsl:function +
+
+ Declares a function that can be called from any XPath expression in the stylesheet
+
+ W3C Documentation reference: #element-function +
+
+
+ + + [3.0] xsl:evaluate +
+
+ Allows dynamic evaluation of XPath expressions from a string
+
+ W3C Documentation reference: #element-evaluate +
+
+
+ + + [3.0] xsl:assert +
+
+ Asserts a XPath expression, optionally throwing a dynamic error
+
+ W3C Documentation reference: #element-assert +
+
+
+ + +
+
+
+ +
+ + + [1.0] xsl:message +
+
+ Writes a message to the output (used to report errors)
+
+ W3C Documentation reference: #message +
+
+ + + + [1.0] xsl:fallback +
+
+ Specifies an alternate code to run if the processor does not support an XSLT element
+
+ W3C Documentation reference: #fallback +
+
+ + + + [3.0] xsl:map +
+
+ Used to construct a new map
+
+ W3C Documentation reference: #element-map +
+
+
+ + + [3.0] xsl:map-entry +
+
+ Used to construct a singleton map (one key and one value)
+
+ W3C Documentation reference: #element-map-entry +
+
+
+ + + [3.0] xsl:expose +
+
+ Used to modify the visibility of selected components within a package
+
+ W3C Documentation reference: #element-expose +
+
+
+ + + [3.0] xsl:accumulator +
+
+ Defines a rule that is to be applied while the document is being sequentially processed
+
+ W3C Documentation reference: #element-accumulator +
+
+
+ + + [3.0] xsl:accumulator-rule +
+
+ Defines a rule for an xsl:accumulator
+
+ W3C Documentation reference: #element-accumulator-rule +
+
+
+ + + [3.0] xsl:source-document +
+
+ Initiates streamed or unstreamed processing of a source document
+
+ W3C Documentation reference: #element-source-document +
+
+
+ + + [3.0] xsl:use-package +
+
+ http://www.w3.org/TR/xslt-30/#element-use-package
+
+ W3C Documentation reference: #element-use-package +
+
+
+ + + [3.0] xsl:where-populated +
+
+ Allows conditional content construction to be made streamable
+
+ W3C Documentation reference: #element-where-populated +
+
+
+ + + [3.0] xsl:accept +
+
+ Allows a package to restrict the visibility of components exposed by a package that it uses
+
+ W3C Documentation reference: #element-accept +
+
+
+
+ + +
+ +
+ +
+ + + + + + + + + + + + + + \ No newline at end of file diff --git a/Jenkinsfile b/Jenkinsfile new file mode 100644 index 0000000..e249db0 --- /dev/null +++ b/Jenkinsfile @@ -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' + } + +} + + diff --git a/REST_XSLT/.classpath b/REST_XSLT/.classpath new file mode 100644 index 0000000..39abf1c --- /dev/null +++ b/REST_XSLT/.classpath @@ -0,0 +1,49 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/REST_XSLT/.idea/.gitignore b/REST_XSLT/.idea/.gitignore new file mode 100644 index 0000000..26d3352 --- /dev/null +++ b/REST_XSLT/.idea/.gitignore @@ -0,0 +1,3 @@ +# Default ignored files +/shelf/ +/workspace.xml diff --git a/REST_XSLT/.idea/REST_XSLT.iml b/REST_XSLT/.idea/REST_XSLT.iml new file mode 100644 index 0000000..78b2cc5 --- /dev/null +++ b/REST_XSLT/.idea/REST_XSLT.iml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/REST_XSLT/.idea/compiler.xml b/REST_XSLT/.idea/compiler.xml new file mode 100644 index 0000000..b58ab04 --- /dev/null +++ b/REST_XSLT/.idea/compiler.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/REST_XSLT/.idea/encodings.xml b/REST_XSLT/.idea/encodings.xml new file mode 100644 index 0000000..aa00ffa --- /dev/null +++ b/REST_XSLT/.idea/encodings.xml @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/REST_XSLT/.idea/jarRepositories.xml b/REST_XSLT/.idea/jarRepositories.xml new file mode 100644 index 0000000..712ab9d --- /dev/null +++ b/REST_XSLT/.idea/jarRepositories.xml @@ -0,0 +1,20 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/REST_XSLT/.idea/misc.xml b/REST_XSLT/.idea/misc.xml new file mode 100644 index 0000000..d24ea8e --- /dev/null +++ b/REST_XSLT/.idea/misc.xml @@ -0,0 +1,14 @@ + + + + + + + + + + \ No newline at end of file diff --git a/REST_XSLT/.idea/uiDesigner.xml b/REST_XSLT/.idea/uiDesigner.xml new file mode 100644 index 0000000..e96534f --- /dev/null +++ b/REST_XSLT/.idea/uiDesigner.xml @@ -0,0 +1,124 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/REST_XSLT/.idea/vcs.xml b/REST_XSLT/.idea/vcs.xml new file mode 100644 index 0000000..b2bdec2 --- /dev/null +++ b/REST_XSLT/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/REST_XSLT/.project b/REST_XSLT/.project new file mode 100644 index 0000000..5673d25 --- /dev/null +++ b/REST_XSLT/.project @@ -0,0 +1,34 @@ + + + REST_XSLT + + + + + + org.eclipse.jdt.core.javabuilder + + + + + org.eclipse.m2e.core.maven2Builder + + + + + + org.eclipse.jdt.core.javanature + org.eclipse.m2e.core.maven2Nature + + + + 1614706323594 + + 30 + + org.eclipse.core.resources.regexFilterMatcher + node_modules|.git|__CREATED_BY_JAVA_LANGUAGE_SERVER__ + + + + diff --git a/REST_XSLT/.settings/org.eclipse.core.resources.prefs b/REST_XSLT/.settings/org.eclipse.core.resources.prefs new file mode 100644 index 0000000..839d647 --- /dev/null +++ b/REST_XSLT/.settings/org.eclipse.core.resources.prefs @@ -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/=UTF-8 diff --git a/REST_XSLT/.settings/org.eclipse.jdt.apt.core.prefs b/REST_XSLT/.settings/org.eclipse.jdt.apt.core.prefs new file mode 100644 index 0000000..d4313d4 --- /dev/null +++ b/REST_XSLT/.settings/org.eclipse.jdt.apt.core.prefs @@ -0,0 +1,2 @@ +eclipse.preferences.version=1 +org.eclipse.jdt.apt.aptEnabled=false diff --git a/REST_XSLT/.settings/org.eclipse.jdt.core.prefs b/REST_XSLT/.settings/org.eclipse.jdt.core.prefs new file mode 100644 index 0000000..1b6e1ef --- /dev/null +++ b/REST_XSLT/.settings/org.eclipse.jdt.core.prefs @@ -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 diff --git a/REST_XSLT/.settings/org.eclipse.m2e.core.prefs b/REST_XSLT/.settings/org.eclipse.m2e.core.prefs new file mode 100644 index 0000000..f897a7f --- /dev/null +++ b/REST_XSLT/.settings/org.eclipse.m2e.core.prefs @@ -0,0 +1,4 @@ +activeProfiles= +eclipse.preferences.version=1 +resolveWorkspaceProjects=true +version=1 diff --git a/REST_XSLT/Dockerfile b/REST_XSLT/Dockerfile new file mode 100644 index 0000000..282927f --- /dev/null +++ b/REST_XSLT/Dockerfile @@ -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 \ No newline at end of file diff --git a/REST_XSLT/RestTMP.iml b/REST_XSLT/RestTMP.iml new file mode 100644 index 0000000..78b2cc5 --- /dev/null +++ b/REST_XSLT/RestTMP.iml @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/REST_XSLT/pom.xml b/REST_XSLT/pom.xml new file mode 100644 index 0000000..a76fe68 --- /dev/null +++ b/REST_XSLT/pom.xml @@ -0,0 +1,134 @@ + + + 4.0.0 + + r11.mltx + REST_XSLT + 1.0-SNAPSHOT + + + 11 + 11 + UTF-8 + + + + + + + + + + + + + + + + + + + + maven-compiler-plugin + 3.8.1 + + 1.8 + 1.8 + + + + + maven-assembly-plugin + 3.3.0 + + + + + true + lib/ + Main + + + + jar-with-dependencies + + + + + + make-assembly + package + + single + + + + + + + + + + + + com.fasterxml.jackson.core + jackson-core + 2.11.0 + + + com.fasterxml.jackson.core + jackson-databind + 2.11.0 + + + com.sparkjava + spark-core + 2.9.3 + + + org.slf4j + slf4j-simple + 1.6.2 + test + + + + net.sf.saxon + Saxon-HE + 10.3 + + + xalan + xalan + 2.7.2 + + + + org.slf4j + jcl-over-slf4j + 1.7.0 + runtime + + + org.slf4j + slf4j-api + 1.7.0 + runtime + + + org.slf4j + slf4j-log4j12 + 1.7.0 + runtime + + + log4j + log4j + 1.2.14 + + + + + \ No newline at end of file diff --git a/REST_XSLT/src/main/java/Main.java b/REST_XSLT/src/main/java/Main.java new file mode 100644 index 0000000..d5b1a22 --- /dev/null +++ b/REST_XSLT/src/main/java/Main.java @@ -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 requestMap = null; + Map 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 requestMap = null; + Map 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 jsonMap = null; + Map 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(); + } + + }; +} diff --git a/REST_XSLT/src/main/java/processors/NewNamespaceResolver.java b/REST_XSLT/src/main/java/processors/NewNamespaceResolver.java new file mode 100644 index 0000000..83f80cf --- /dev/null +++ b/REST_XSLT/src/main/java/processors/NewNamespaceResolver.java @@ -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 it = doc.children().iterator(); + + while (it.hasNext()) { + XdmNode tmp = it.next(); + extractNamespace(tmp); + } + return namespaceMap; + } + + public void exportNamespaces(XPathCompiler compiler){ + Iterator 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 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); + } + } + } +} diff --git a/REST_XSLT/src/main/java/processors/Saxon.java b/REST_XSLT/src/main/java/processors/Saxon.java new file mode 100644 index 0000000..5f2f83e --- /dev/null +++ b/REST_XSLT/src/main/java/processors/Saxon.java @@ -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(); + } +} diff --git a/REST_XSLT/src/main/java/processors/Xalan.java b/REST_XSLT/src/main/java/processors/Xalan.java new file mode 100644 index 0000000..0a56e5c --- /dev/null +++ b/REST_XSLT/src/main/java/processors/Xalan.java @@ -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(); +// } + } +} diff --git a/REST_XSLT/src/main/java/processors/XalanNamespaceResolver.java b/REST_XSLT/src/main/java/processors/XalanNamespaceResolver.java new file mode 100644 index 0000000..4418087 --- /dev/null +++ b/REST_XSLT/src/main/java/processors/XalanNamespaceResolver.java @@ -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 prefix2Uri = new HashMap(); + private Map uri2Prefix = new HashMap(); + + /** + * 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; + } + +} \ No newline at end of file diff --git a/REST_XSLT/src/main/resources/log4j.properties b/REST_XSLT/src/main/resources/log4j.properties new file mode 100644 index 0000000..0a185ad --- /dev/null +++ b/REST_XSLT/src/main/resources/log4j.properties @@ -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 \ No newline at end of file diff --git a/REST_XSLT/target/REST_XSLT-1.0-SNAPSHOT-jar-with-dependencies.jar b/REST_XSLT/target/REST_XSLT-1.0-SNAPSHOT-jar-with-dependencies.jar new file mode 100644 index 0000000..db874eb Binary files /dev/null and b/REST_XSLT/target/REST_XSLT-1.0-SNAPSHOT-jar-with-dependencies.jar differ diff --git a/REST_XSLT/target/REST_XSLT-1.0-SNAPSHOT.jar b/REST_XSLT/target/REST_XSLT-1.0-SNAPSHOT.jar new file mode 100644 index 0000000..133f4cc Binary files /dev/null and b/REST_XSLT/target/REST_XSLT-1.0-SNAPSHOT.jar differ diff --git a/REST_XSLT/target/classes/Main.class b/REST_XSLT/target/classes/Main.class new file mode 100644 index 0000000..50e968a Binary files /dev/null and b/REST_XSLT/target/classes/Main.class differ diff --git a/REST_XSLT/target/classes/log4j.properties b/REST_XSLT/target/classes/log4j.properties new file mode 100644 index 0000000..0a185ad --- /dev/null +++ b/REST_XSLT/target/classes/log4j.properties @@ -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 \ No newline at end of file diff --git a/REST_XSLT/target/classes/processors/NewNamespaceResolver.class b/REST_XSLT/target/classes/processors/NewNamespaceResolver.class new file mode 100644 index 0000000..a43bf3d Binary files /dev/null and b/REST_XSLT/target/classes/processors/NewNamespaceResolver.class differ diff --git a/REST_XSLT/target/classes/processors/Saxon.class b/REST_XSLT/target/classes/processors/Saxon.class new file mode 100644 index 0000000..6accb2f Binary files /dev/null and b/REST_XSLT/target/classes/processors/Saxon.class differ diff --git a/REST_XSLT/target/classes/processors/Xalan.class b/REST_XSLT/target/classes/processors/Xalan.class new file mode 100644 index 0000000..e05eabc Binary files /dev/null and b/REST_XSLT/target/classes/processors/Xalan.class differ diff --git a/REST_XSLT/target/classes/processors/XalanNamespaceResolver.class b/REST_XSLT/target/classes/processors/XalanNamespaceResolver.class new file mode 100644 index 0000000..419b856 Binary files /dev/null and b/REST_XSLT/target/classes/processors/XalanNamespaceResolver.class differ diff --git a/REST_XSLT/target/maven-archiver/pom.properties b/REST_XSLT/target/maven-archiver/pom.properties new file mode 100644 index 0000000..f993c73 --- /dev/null +++ b/REST_XSLT/target/maven-archiver/pom.properties @@ -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 diff --git a/REST_XSLT/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst b/REST_XSLT/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst new file mode 100644 index 0000000..5a335ba --- /dev/null +++ b/REST_XSLT/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst @@ -0,0 +1,3 @@ +Main.class +XSLTProcessors.class +XPathProcessors.class diff --git a/REST_XSLT/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst b/REST_XSLT/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst new file mode 100644 index 0000000..0322549 --- /dev/null +++ b/REST_XSLT/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst @@ -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 diff --git a/REST_XSLT/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/createdFiles.lst b/REST_XSLT/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/createdFiles.lst new file mode 100644 index 0000000..e69de29 diff --git a/REST_XSLT/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/inputFiles.lst b/REST_XSLT/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/inputFiles.lst new file mode 100644 index 0000000..e69de29 diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..6f0f849 --- /dev/null +++ b/docker-compose.yml @@ -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 \ No newline at end of file