[oXygen-user] Xml Schema to Sql Table Scripts and CRUD operations

Ben McGinnes ben at adversary.org
Sat Feb 10 12:19:26 CST 2018


On Tue, Jan 30, 2018 at 02:53:44AM +0000, Karl Stubsjoen wrote:
>
> I'd like to convert Xml Schema's directly to Sql Table scripts and
> simple CRUD operations.  I will write my own stylesheets to do this
> but figured I'd check first with support to see what is available.
> Unfortunately when you Google it, only the "other" product pops up
> as having a solution.

One of the perks of not dealing directly with the systems engineering
world is not needing to fix someone else's broken db ... but I
digress.  Those years did, however, drill home the value of anything
which does (or comes close enough to do) for SQL databases what oXygen
does for XML, will always be worth keeping on hand.

Navicat (ideally the Premium edition) is still the winner there, even
here where OS constraints prevent installing the latest version.
Unfortunately it's OS X and Windows only, but it makes the damned
things less painful.  The conversion method is basically follow the
prompts and does plenty more than XML.

A bit over two years ago I stumbled across a mostly undocumented XML
schema in a project I contribute to.  Shortly after that, I generated
schema files for it with oXygenXML Editor.  So I figured I'd use that
to demonstrate what Navicat's import does.  Attached is the XSD
version of the schema and the subsequent dump file created after
importing into a test server (only the db server host address has been
changed).

The source material is in one of my git branches until we decide
if/when to set a global xmlns for future releases.  That branch is
here:

https://git.gnupg.org/cgi-bin/gitweb.cgi?p=gpgme.git;a=tree;f=lang/xml-schemas;h=6306cd1dca1cfacb5a97ac80848fcc216622bfb1;hb=003c3f24fd6ef19e6e7042d461232c33a6f83150

In the mean time it can at least show the value in selecting the right
corners to cut.  ;)


Regards,
Ben
-------------- next part --------------
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
  <xs:element name="gpgme">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="keylist"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="keylist">
    <xs:complexType>
      <xs:sequence>
        <xs:element maxOccurs="unbounded" ref="key"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="key">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="revoked"/>
        <xs:element ref="expired"/>
        <xs:element ref="disabled"/>
        <xs:element ref="invalid"/>
        <xs:element ref="can-encrypt"/>
        <xs:element ref="can-sign"/>
        <xs:element ref="can-certify"/>
        <xs:element ref="can-authenticate"/>
        <xs:element ref="is-qualified"/>
        <xs:element ref="secret"/>
        <xs:element ref="protocol"/>
        <xs:element ref="issuer"/>
        <xs:element ref="chain-id"/>
        <xs:element ref="owner-trust"/>
        <xs:element ref="subkeys"/>
        <xs:element ref="uids"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="revoked">
    <xs:complexType>
      <xs:attribute name="value" use="required" type="xs:NMTOKEN"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="expired">
    <xs:complexType>
      <xs:attribute name="value" use="required" type="xs:NMTOKEN"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="disabled">
    <xs:complexType>
      <xs:attribute name="value" use="required" type="xs:NMTOKEN"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="invalid">
    <xs:complexType>
      <xs:attribute name="value" use="required" type="xs:NMTOKEN"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="can-encrypt">
    <xs:complexType>
      <xs:attribute name="value" use="required" type="xs:NMTOKEN"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="can-sign">
    <xs:complexType>
      <xs:attribute name="value" use="required" type="xs:NMTOKEN"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="can-certify">
    <xs:complexType>
      <xs:attribute name="value" use="required" type="xs:NMTOKEN"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="can-authenticate">
    <xs:complexType>
      <xs:attribute name="value" use="required" type="xs:NMTOKEN"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="is-qualified">
    <xs:complexType>
      <xs:attribute name="value" use="required" type="xs:NMTOKEN"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="protocol">
    <xs:complexType>
      <xs:simpleContent>
        <xs:extension base="xs:NCName">
          <xs:attribute name="value" use="required" type="xs:integer"/>
        </xs:extension>
      </xs:simpleContent>
    </xs:complexType>
  </xs:element>
  <xs:element name="issuer">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="serial"/>
        <xs:element ref="name"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="serial">
    <xs:complexType/>
  </xs:element>
  <xs:element name="chain-id">
    <xs:complexType/>
  </xs:element>
  <xs:element name="owner-trust">
    <xs:complexType>
      <xs:simpleContent>
        <xs:extension base="xs:NCName">
          <xs:attribute name="value" use="required" type="xs:integer"/>
        </xs:extension>
      </xs:simpleContent>
    </xs:complexType>
  </xs:element>
  <xs:element name="subkeys">
    <xs:complexType>
      <xs:sequence>
        <xs:element maxOccurs="unbounded" ref="subkey"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="subkey">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="keyid"/>
        <xs:element ref="fpr"/>
        <xs:element ref="secret"/>
        <xs:element ref="is_cardkey"/>
        <xs:element minOccurs="0" ref="curve"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="keyid" type="xs:NMTOKEN"/>
  <xs:element name="fpr" type="xs:string"/>
  <xs:element name="is_cardkey">
    <xs:complexType>
      <xs:attribute name="value" use="required" type="xs:NMTOKEN"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="curve" type="xs:NCName"/>
  <xs:element name="uids">
    <xs:complexType>
      <xs:sequence>
        <xs:element maxOccurs="unbounded" ref="uid"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="secret">
    <xs:complexType>
      <xs:attribute name="value" use="required" type="xs:NMTOKEN"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="name" type="xs:string"/>
  <xs:element name="uid">
    <xs:complexType mixed="true">
      <xs:choice minOccurs="0" maxOccurs="unbounded">
        <xs:element ref="name"/>
        <xs:element ref="uid"/>
        <xs:element ref="comment"/>
        <xs:element ref="email"/>
      </xs:choice>
    </xs:complexType>
  </xs:element>
  <xs:element name="comment" type="xs:string"/>
  <xs:element name="email" type="xs:anyURI"/>
</xs:schema>
-------------- next part --------------
/*
 Navicat Premium Data Transfer

 Source Server         : localhost
 Source Server Type    : MySQL
 Source Server Version : 50626
 Source Host           : localhost
 Source Database       : test

 Target Server Type    : MySQL
 Target Server Version : 50626
 File Encoding         : utf-8

 Date: 02/11/2018 04:51:27 AM
*/

SET NAMES utf8;
SET FOREIGN_KEY_CHECKS = 0;

-- ----------------------------
--  Table structure for `gpgmekeys`
-- ----------------------------
DROP TABLE IF EXISTS `gpgmekeys`;
CREATE TABLE `gpgmekeys` (
  `element` varchar(255) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

-- ----------------------------
--  Records of `gpgmekeys`
-- ----------------------------
BEGIN;
INSERT INTO `gpgmekeys` VALUES ('gpgme'), ('keylist'), ('key'), ('revoked'), ('expired'), ('disabled'), ('invalid'), ('can-encrypt'), ('can-sign'), ('can-certify'), ('can-authenticate'), ('is-qualified'), ('protocol'), ('issuer'), ('serial'), ('chain-id'), ('owner-trust'), ('subkeys'), ('subkey'), ('keyid'), ('is_cardkey'), ('curve'), ('secret'), ('name'), ('comment');
COMMIT;

SET FOREIGN_KEY_CHECKS = 1;
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 228 bytes
Desc: not available
URL: <http://www.oxygenxml.com/pipermail/oxygen-user/attachments/20180211/288c2c61/attachment.sig>


More information about the oXygen-user mailing list