Reimplemented XML Tools and added styling #227
33
Frontend/src/assets/sampleXMLForXSD.xml
Normal file
33
Frontend/src/assets/sampleXMLForXSD.xml
Normal file
@@ -0,0 +1,33 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<library>
|
||||||
|
<libraryName>City library</libraryName>
|
||||||
|
<libraryID>345123</libraryID>
|
||||||
|
<readerList>
|
||||||
|
<person>
|
||||||
|
<readerID>7321</readerID>
|
||||||
|
<name>Adam</name>
|
||||||
|
<surname>Choke</surname>
|
||||||
|
</person>
|
||||||
|
<person>
|
||||||
|
<readerID>5123</readerID>
|
||||||
|
<name>Lauren</name>
|
||||||
|
<surname>Wong</surname>
|
||||||
|
</person>
|
||||||
|
</readerList>
|
||||||
|
<bookList>
|
||||||
|
<book>
|
||||||
|
<bookID>6422</bookID>
|
||||||
|
<title>Harry Potter</title>
|
||||||
|
<readerID>7542</readerID>
|
||||||
|
</book>
|
||||||
|
<book>
|
||||||
|
<bookID>1234</bookID>
|
||||||
|
<title>Macbeth</title>
|
||||||
|
<readerID>5123</readerID>
|
||||||
|
</book>
|
||||||
|
<book>
|
||||||
|
<bookID>9556</bookID>
|
||||||
|
<title>Romeo and Juliet</title>
|
||||||
|
</book>
|
||||||
|
</bookList>
|
||||||
|
</library>
|
||||||
7
Frontend/src/assets/sampleXQuery.xquery
Normal file
7
Frontend/src/assets/sampleXQuery.xquery
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
declare namespace p="http://www.release11.com/person";
|
||||||
|
declare namespace b="http://www.release11.com/book";
|
||||||
|
declare namespace l="http://www.release11.com/library";
|
||||||
|
|
||||||
|
|
||||||
|
for $x in //p:person
|
||||||
|
return string($x/p:name)
|
||||||
33
Frontend/src/assets/sampleXml.xml
Normal file
33
Frontend/src/assets/sampleXml.xml
Normal file
@@ -0,0 +1,33 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<l:library xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.release11.com" xmlns:l="http://www.release11.com/library" xmlns:p="http://www.release11.com/person" xmlns:b="http://www.release11.com/book">
|
||||||
|
<l:libraryName>City library</l:libraryName>
|
||||||
|
<l:libraryID>345123</l:libraryID>
|
||||||
|
<l:readerList>
|
||||||
|
<p:person>
|
||||||
|
<p:readerID>7321</p:readerID>
|
||||||
|
<p:name>Adam</p:name>
|
||||||
|
<p:surname>Choke</p:surname>
|
||||||
|
</p:person>
|
||||||
|
<p:person>
|
||||||
|
<p:readerID>5123</p:readerID>
|
||||||
|
<p:name>Lauren</p:name>
|
||||||
|
<p:surname>Wong</p:surname>
|
||||||
|
</p:person>
|
||||||
|
</l:readerList>
|
||||||
|
<l:bookList>
|
||||||
|
<b:book>
|
||||||
|
<b:bookID>6422</b:bookID>
|
||||||
|
<b:title>Harry Potter</b:title>
|
||||||
|
<p:readerID>7542</p:readerID>
|
||||||
|
</b:book>
|
||||||
|
<b:book>
|
||||||
|
<b:bookID>1234</b:bookID>
|
||||||
|
<b:title>Macbeth</b:title>
|
||||||
|
<p:readerID>5123</p:readerID>
|
||||||
|
</b:book>
|
||||||
|
<b:book>
|
||||||
|
<b:bookID>9556</b:bookID>
|
||||||
|
<b:title>Romeo and Juliet</b:title>
|
||||||
|
</b:book>
|
||||||
|
</l:bookList>
|
||||||
|
</l:library>
|
||||||
42
Frontend/src/assets/sampleXsd.xml
Normal file
42
Frontend/src/assets/sampleXsd.xml
Normal file
@@ -0,0 +1,42 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
|
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified"
|
||||||
|
targetNamespace="">
|
||||||
|
<xsd:element name="library">
|
||||||
|
<xsd:complexType mixed="true">
|
||||||
|
<xsd:sequence>
|
||||||
|
<xsd:element minOccurs="0" name="libraryName" type="xsd:string" />
|
||||||
|
<xsd:element minOccurs="0" name="libraryID" type="xsd:int" />
|
||||||
|
<xsd:element minOccurs="0" name="readerList">
|
||||||
|
<xsd:complexType mixed="true">
|
||||||
|
<xsd:sequence>
|
||||||
|
<xsd:element maxOccurs="unbounded" name="person">
|
||||||
|
<xsd:complexType mixed="true">
|
||||||
|
<xsd:sequence>
|
||||||
|
<xsd:element minOccurs="0" name="readerID" type="xsd:int" />
|
||||||
|
<xsd:element minOccurs="0" name="name" type="xsd:normalizedString" />
|
||||||
|
<xsd:element minOccurs="0" name="surname" type="xsd:normalizedString" />
|
||||||
|
</xsd:sequence>
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
</xsd:sequence>
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
<xsd:element minOccurs="0" name="bookList">
|
||||||
|
<xsd:complexType mixed="true">
|
||||||
|
<xsd:sequence>
|
||||||
|
<xsd:element maxOccurs="unbounded" name="book">
|
||||||
|
<xsd:complexType mixed="true">
|
||||||
|
<xsd:sequence>
|
||||||
|
<xsd:element minOccurs="0" name="bookID" type="xsd:int" />
|
||||||
|
<xsd:element minOccurs="0" name="title" type="xsd:string" />
|
||||||
|
<xsd:element minOccurs="0" name="readerID" type="xsd:int" />
|
||||||
|
</xsd:sequence>
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
</xsd:sequence>
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
</xsd:sequence>
|
||||||
|
</xsd:complexType>
|
||||||
|
</xsd:element>
|
||||||
|
</xsd:schema>
|
||||||
14
Frontend/src/assets/sampleXslt.xml
Normal file
14
Frontend/src/assets/sampleXslt.xml
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
|
||||||
|
xmlns:b="http://www.release11.com/book" xmlns:p="http://www.release11.com/person"
|
||||||
|
xmlns:l="http://www.release11.com/library">
|
||||||
|
<xsl:template match="/">
|
||||||
|
<Library>
|
||||||
|
<ReaderCount>
|
||||||
|
<xsl:value-of select="count(//p:person)" />
|
||||||
|
</ReaderCount>
|
||||||
|
<BookCount>
|
||||||
|
<xsl:value-of select="count(/l:library/l:bookList/b:book)" />
|
||||||
|
</BookCount>
|
||||||
|
</Library>
|
||||||
|
</xsl:template>
|
||||||
|
</xsl:stylesheet>
|
||||||
@@ -21,16 +21,26 @@ function sendTransform() {
|
|||||||
emit('update:transform', query.value)
|
emit('update:transform', query.value)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function setToDefaultXML(data: string) {
|
||||||
|
xml.value = data;
|
||||||
|
sendXml();
|
||||||
|
}
|
||||||
|
|
||||||
|
function setToDefaultQuery(data: string) {
|
||||||
|
query.value = data;
|
||||||
|
sendTransform();
|
||||||
|
}
|
||||||
|
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<template>
|
<template>
|
||||||
<div class="flex flex-col w-full lg:w-1/2 h-full items-center gap-4">
|
<div class="flex flex-col w-full lg:w-1/2 h-full items-center gap-4">
|
||||||
<div class="flex flex-col w-full h-1/2">
|
<div class="flex flex-col w-full h-1/2">
|
||||||
<xmlInputFieldToolbarComponent prettyName="XML"></xmlInputFieldToolbarComponent>
|
<xmlInputFieldToolbarComponent prettyName="XML" @update:defaultData="(data) => setToDefaultXML(data)"></xmlInputFieldToolbarComponent>
|
||||||
<textarea id="xmlField" v-model="xml" @input="sendXml()" class="w-full h-full resize-none dark:text-slate-100 dark:bg-gray-600 border border-slate-400 p-2 rounded-md"></textarea>
|
<textarea id="xmlField" v-model="xml" @input="sendXml()" class="w-full h-full resize-none dark:text-slate-100 dark:bg-gray-600 border border-slate-400 p-2 rounded-md"></textarea>
|
||||||
</div>
|
</div>
|
||||||
<div class="flex flex-col w-full h-1/2">
|
<div class="flex flex-col w-full h-1/2">
|
||||||
<xmlInputFieldToolbarComponent :prettyName="$props.prettyName"></xmlInputFieldToolbarComponent>
|
<xmlInputFieldToolbarComponent :prettyName="$props.prettyName" @update:defaultData="(data) => setToDefaultQuery(data)"></xmlInputFieldToolbarComponent>
|
||||||
<textarea id="transformField" v-model="query" @input="sendTransform()" class="w-full h-full resize-none dark:text-slate-100 dark:bg-gray-600 border border-slate-400 p-2 rounded-md"></textarea>
|
<textarea id="transformField" v-model="query" @input="sendTransform()" class="w-full h-full resize-none dark:text-slate-100 dark:bg-gray-600 border border-slate-400 p-2 rounded-md"></textarea>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -1,18 +1,49 @@
|
|||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
|
|
||||||
|
import sampleXML from "@/assets/sampleXml.xml?raw"
|
||||||
|
import sampleXSLT from "@/assets/sampleXslt.xml?raw"
|
||||||
|
import sampleXSD from "@/assets/sampleXsd.xml?raw"
|
||||||
|
import sampleXQuery from "@/assets/sampleXQuery.xquery?raw"
|
||||||
|
|
||||||
|
|
||||||
const props = defineProps(
|
const props = defineProps(
|
||||||
{
|
{
|
||||||
prettyName: {type: String, required: true}
|
prettyName: {type: String, required: true}
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
|
||||||
|
const emit = defineEmits(['update:defaultData'])
|
||||||
|
|
||||||
|
function setDefault() {
|
||||||
|
console.log(props.prettyName.toLowerCase())
|
||||||
|
switch (props.prettyName.toLowerCase()) {
|
||||||
|
case "xpath":
|
||||||
|
emit("update:defaultData", "string(/l:library/l:libraryName)")
|
||||||
|
break;
|
||||||
|
case "xsd":
|
||||||
|
emit("update:defaultData", sampleXSD)
|
||||||
|
break;
|
||||||
|
case "xslt":
|
||||||
|
emit("update:defaultData", sampleXSLT)
|
||||||
|
break;
|
||||||
|
case "xquery":
|
||||||
|
emit("update:defaultData", sampleXQuery)
|
||||||
|
break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
emit("update:defaultData", sampleXML)
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<template>
|
<template>
|
||||||
<div class="flex place-content-between w-full pr-2 items-center m-2">
|
<div class="flex place-content-between w-full pr-2 items-center m-2">
|
||||||
<span class="dark:text-white">{{ prettyName }}</span>
|
<span class="dark:text-white">{{ prettyName }}</span>
|
||||||
<div class="flex space-x-2">
|
<div class="flex space-x-2">
|
||||||
<button class="tool-button">Insert default {{ prettyName }}</button>
|
<button class="tool-button" @click="setDefault()">Insert default {{ prettyName }}</button>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -10,6 +10,8 @@ const props = defineProps(
|
|||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
|
||||||
|
const emit = defineEmits(['update:result'])
|
||||||
|
|
||||||
const engine = ref('');
|
const engine = ref('');
|
||||||
const version = ref('');
|
const version = ref('');
|
||||||
|
|
||||||
@@ -17,7 +19,6 @@ const isSaxonHidden = ref(false);
|
|||||||
const isXalanHidden = ref(false);
|
const isXalanHidden = ref(false);
|
||||||
const isLibXMLHidden = ref(false);
|
const isLibXMLHidden = ref(false);
|
||||||
|
|
||||||
const emit = defineEmits(['update:result'])
|
|
||||||
|
|
||||||
function process() {
|
function process() {
|
||||||
var request:Request = prepareRequest();
|
var request:Request = prepareRequest();
|
||||||
|
|||||||
Reference in New Issue
Block a user