xs:string
xml
Generate XML Schema Definition types from SQL schema
Example Output
Generated from the pet-store sample schema:
xml
<?xml version="1.0" encoding="UTF-8"?>
<!-- Generated by @sqldoc/templates/xsd. DO NOT EDIT -->
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:complexType name="Adoption">
<xs:sequence>
<xs:element name="id" type="xs:int"/>
<xs:element name="petId" type="xs:int"/>
<xs:element name="ownerId" type="xs:int"/>
<xs:element name="adoptedAt" type="xs:dateTime"/>
<xs:element name="adoptionFee" type="xs:decimal"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="AdoptionsAuditLog">
<xs:sequence>
<xs:element name="id" type="xs:long"/>
<xs:element name="tableName" type="xs:string"/>
<xs:element name="operation" type="xs:string"/>
<xs:element name="oldData" type="xs:string" minOccurs="0"/>
<xs:element name="newData" type="xs:string" minOccurs="0"/>
<xs:element name="changedAt" type="xs:dateTime"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="Category">
<xs:sequence>
<xs:element name="id" type="xs:int"/>
<xs:element name="name">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:minLength value="1"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="description" type="xs:string" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="LegacyInventory">
<xs:sequence>
<xs:element name="id" type="xs:int"/>
<xs:element name="itemName" type="xs:string" minOccurs="0"/>
<xs:element name="oldSku" type="xs:string" minOccurs="0"/>
<xs:element name="quantity" type="xs:int" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="Location">
<xs:sequence>
<xs:element name="id" type="xs:int"/>
<xs:element name="name" type="xs:string"/>
<xs:element name="address" type="xs:string"/>
<xs:element name="city" type="xs:string"/>
<xs:element name="zip" type="xs:string" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="MedicalRecord">
<xs:sequence>
<xs:element name="id" type="xs:int"/>
<xs:element name="petId" type="xs:int"/>
<xs:element name="visitDate" type="xs:date"/>
<xs:element name="diagnosis" type="xs:string"/>
<xs:element name="treatment" type="xs:string" minOccurs="0"/>
<xs:element name="vetName" type="xs:string" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="Owner">
<xs:sequence>
<xs:element name="id" type="xs:int"/>
<xs:element name="name">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:minLength value="1"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="email">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:pattern value="^[^@]+@[^@]+\.[^@]+$"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="phone" minOccurs="0">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:minLength value="7"/>
<xs:maxLength value="20"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="createdAt" type="xs:dateTime" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="Pet">
<xs:sequence>
<xs:element name="id" type="xs:int"/>
<xs:element name="categoryId" type="xs:int" minOccurs="0"/>
<xs:element name="name">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:minLength value="1"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="sku">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:pattern value="^[A-Z]{3}-[0-9]{4}$"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="price">
<xs:simpleType>
<xs:restriction base="xs:decimal">
<xs:minInclusive value="0"/>
<xs:maxInclusive value="99999"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="internalNotes" type="xs:string" minOccurs="0"/>
<xs:element name="status" type="xs:string"/>
<xs:element name="createdAt" type="xs:dateTime" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="Review">
<xs:sequence>
<xs:element name="id" type="xs:int"/>
<xs:element name="petId" type="xs:int"/>
<xs:element name="ownerId" type="xs:int"/>
<xs:element name="rating">
<xs:simpleType>
<xs:restriction base="xs:int">
<xs:minInclusive value="1"/>
<xs:maxInclusive value="5"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="body" type="xs:string" minOccurs="0"/>
<xs:element name="locationId" type="xs:int" minOccurs="0"/>
<xs:element name="createdAt" type="xs:dateTime" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="StaffAuditLog">
<xs:sequence>
<xs:element name="id" type="xs:long"/>
<xs:element name="tableName" type="xs:string"/>
<xs:element name="operation" type="xs:string"/>
<xs:element name="oldData" type="xs:string" minOccurs="0"/>
<xs:element name="newData" type="xs:string" minOccurs="0"/>
<xs:element name="changedAt" type="xs:dateTime"/>
</xs:sequence>
</xs:complexType>
</xs:schema>Usage
Add to your sqldoc.config.ts:
typescript
export default {
dialect: 'postgres',
schema: ['./schema.sql'],
codegen: [
{
template: 'xsd',
output: './generated/schema.xsd',
},
],
}Then run:
bash
sqldoc codegen