gdbots/pbjc-php

View on GitHub
xsd/schema.xsd

Summary

Maintainability
Test Coverage
<?xml version="1.0" encoding="UTF-8" ?>
<xsd:schema xmlns="http://gdbots.io/pbj/xsd"
    xmlns:xsd="http://www.w3.org/2001/XMLSchema"
    targetNamespace="http://gdbots.io/pbj/xsd"
    elementFormDefault="qualified">

  <xsd:annotation>
    <xsd:documentation><![CDATA[
      This is the XML Schema for the Pbj Schema IDL used by the Pbjc.
    ]]></xsd:documentation>
  </xsd:annotation>

  <xsd:element name="pbj-schema">
    <xsd:complexType>
      <xsd:sequence>
        <xsd:element name="schema" type="schema" minOccurs="1" maxOccurs="1" />
        <xsd:any minOccurs="0" maxOccurs="unbounded" namespace="##other"/>
      </xsd:sequence>
      <xsd:anyAttribute namespace="##other"/>
    </xsd:complexType>
  </xsd:element>

  <xsd:complexType name="schema">
    <xsd:sequence>
      <xsd:element name="fields" type="fields" minOccurs="0" maxOccurs="1" />
      <xsd:element name="mixins" type="schemaCurieMajorIds" minOccurs="0" maxOccurs="1" />
      <xsd:element name="php-options" type="schemaPhpOptions" minOccurs="0" maxOccurs="1" />
      <xsd:element name="js-options" type="schemaJsOptions" minOccurs="0" maxOccurs="1" />
      <xsd:any minOccurs="0" maxOccurs="unbounded" namespace="##other" />
    </xsd:sequence>
    <xsd:attribute name="id" type="schemaIdentifierRegex" use="required" />
    <xsd:attribute name="extends" type="schemaCurieMajorRegex" use="optional" />
    <xsd:attribute name="mixin" type="xsd:boolean" default="false" />
    <xsd:attribute name="deprecated" type="xsd:boolean" default="false" />
    <xsd:anyAttribute namespace="##other" />
  </xsd:complexType>

  <xsd:complexType name="fields">
    <xsd:sequence>
      <xsd:element name="field" type="field" minOccurs="0" maxOccurs="unbounded" />
      <xsd:any minOccurs="0" maxOccurs="unbounded" namespace="##other" />
    </xsd:sequence>
    <xsd:anyAttribute namespace="##other" />
  </xsd:complexType>

  <xsd:complexType name="field">
    <xsd:sequence>
      <xsd:element name="description" type="xsd:string" minOccurs="0" maxOccurs="1" />
      <xsd:element name="default" type="xsd:string" minOccurs="0" maxOccurs="1" />
      <xsd:element name="enum" type="fieldEnum" minOccurs="0" maxOccurs="1" />
      <xsd:element name="any-of" type="schemaCurieIds" minOccurs="0" maxOccurs="1" />
      <xsd:element name="php-options" type="fieldPhpOptions" minOccurs="0" maxOccurs="1" />
      <xsd:element name="js-options" type="fieldJsOptions" minOccurs="0" maxOccurs="1" />
      <xsd:element name="json-schema-options" type="fieldJsonSchemaOptions" minOccurs="0" maxOccurs="1" />
      <xsd:any minOccurs="0" maxOccurs="unbounded" namespace="##other" />
    </xsd:sequence>
    <xsd:attribute name="name" type="xsd:string" use="required" />
    <xsd:attribute name="type" type="fieldType" use="required" />
    <xsd:attribute name="required" type="xsd:boolean" default="false" />
    <xsd:attribute name="min" type="xsd:integer" use="optional" />
    <xsd:attribute name="max" type="xsd:integer" use="optional" />
    <xsd:attribute name="precision" type="xsd:integer" use="optional" />
    <xsd:attribute name="scale" type="xsd:integer" use="optional" />
    <xsd:attribute name="rule" type="fieldRule" use="optional" />
    <xsd:attribute name="pattern" type="xsd:string" use="optional" />
    <xsd:attribute name="format" type="fieldFormat" use="optional" />
    <xsd:attribute name="use-type-default" type="xsd:boolean" default="true" />
    <xsd:attribute name="overridable" type="xsd:boolean" default="false" />
    <xsd:attribute name="deprecated" type="xsd:boolean" default="false" />
    <xsd:anyAttribute namespace="##other" />
  </xsd:complexType>

  <xsd:complexType name="schemaCurieMajorIds">
    <xsd:sequence>
      <xsd:element name="curie-major" type="schemaCurieMajorRegex" minOccurs="0" maxOccurs="unbounded" />
      <xsd:any minOccurs="0" maxOccurs="unbounded" namespace="##other" />
    </xsd:sequence>
    <xsd:anyAttribute namespace="##other" />
  </xsd:complexType>

  <xsd:complexType name="schemaCurieIds">
    <xsd:sequence>
      <xsd:element name="curie" type="schemaCurieRegex" minOccurs="0" maxOccurs="unbounded" />
      <xsd:any minOccurs="0" maxOccurs="unbounded" namespace="##other" />
    </xsd:sequence>
    <xsd:anyAttribute namespace="##other" />
  </xsd:complexType>

  <xsd:complexType name="schemaPhpOptions">
    <xsd:sequence>
      <xsd:element name="insertion-points" type="insertionPointsPhpOptions" minOccurs="0" maxOccurs="1" />
      <xsd:any minOccurs="0" maxOccurs="unbounded" processContents="lax" />
      <xsd:any minOccurs="0" maxOccurs="unbounded" namespace="##other" />
    </xsd:sequence>
    <xsd:anyAttribute namespace="##other" />
  </xsd:complexType>

  <xsd:complexType name="insertionPointsPhpOptions">
    <xsd:sequence>
      <xsd:element name="imports" type="xsd:string" minOccurs="0" maxOccurs="1" />
      <xsd:element name="methods" type="xsd:string" minOccurs="0" maxOccurs="1" />
      <xsd:any minOccurs="0" maxOccurs="unbounded" namespace="##other" />
    </xsd:sequence>
    <xsd:anyAttribute namespace="##other" />
  </xsd:complexType>

  <xsd:complexType name="schemaJsOptions">
    <xsd:sequence>
      <xsd:element name="insertion-points" type="insertionPointsJsOptions" minOccurs="0" maxOccurs="1" />
      <xsd:any minOccurs="0" maxOccurs="unbounded" processContents="lax" />
      <xsd:any minOccurs="0" maxOccurs="unbounded" namespace="##other" />
    </xsd:sequence>
    <xsd:anyAttribute namespace="##other" />
  </xsd:complexType>

  <xsd:complexType name="insertionPointsJsOptions">
    <xsd:sequence>
      <xsd:element name="imports" type="xsd:string" minOccurs="0" maxOccurs="1" />
      <xsd:element name="methods" type="xsd:string" minOccurs="0" maxOccurs="1" />
      <xsd:any minOccurs="0" maxOccurs="unbounded" namespace="##other" />
    </xsd:sequence>
    <xsd:anyAttribute namespace="##other" />
  </xsd:complexType>

  <xsd:complexType name="fieldEnum">
    <xsd:attribute name="id" type="enumIdRegex" use="required" />
    <xsd:anyAttribute namespace="##other" />
  </xsd:complexType>

  <xsd:simpleType name="enumIdRegex">
    <xsd:restriction base="xsd:string">
      <xsd:pattern value="([a-z0-9-]+):([a-z0-9\.-]+):([a-z0-9-]+)" />
    </xsd:restriction>
  </xsd:simpleType>

  <xsd:complexType name="fieldPhpOptions">
    <xsd:sequence>
      <xsd:element name="imports" type="xsd:string" minOccurs="0" maxOccurs="1" />
      <xsd:element name="class-name" type="xsd:string" minOccurs="0" maxOccurs="1" />
      <xsd:element name="default" type="xsd:string" minOccurs="0" maxOccurs="1" />
      <xsd:element name="assertion" type="xsd:string" minOccurs="0" maxOccurs="1" />
      <xsd:any minOccurs="0" maxOccurs="unbounded" processContents="lax" />
      <xsd:any minOccurs="0" maxOccurs="unbounded" namespace="##other" />
    </xsd:sequence>
    <xsd:anyAttribute namespace="##other" />
  </xsd:complexType>

  <xsd:complexType name="fieldJsOptions">
    <xsd:sequence>
      <xsd:element name="imports" type="xsd:string" minOccurs="0" maxOccurs="1" />
      <xsd:element name="class-proto" type="xsd:string" minOccurs="0" maxOccurs="1" />
      <xsd:element name="default" type="xsd:string" minOccurs="0" maxOccurs="1" />
      <xsd:element name="assertion" type="xsd:string" minOccurs="0" maxOccurs="1" />
      <xsd:any minOccurs="0" maxOccurs="unbounded" processContents="lax" />
      <xsd:any minOccurs="0" maxOccurs="unbounded" namespace="##other" />
    </xsd:sequence>
    <xsd:anyAttribute namespace="##other" />
  </xsd:complexType>

  <xsd:complexType name="fieldJsonSchemaOptions">
    <xsd:sequence>
      <xsd:element name="faker" type="fakerMethod" minOccurs="0" maxOccurs="1" />
      <xsd:any minOccurs="0" maxOccurs="unbounded" processContents="lax" />
      <xsd:any minOccurs="0" maxOccurs="unbounded" namespace="##other" />
    </xsd:sequence>
    <xsd:anyAttribute namespace="##other" />
  </xsd:complexType>

  <xsd:simpleType name="schemaCurieRegex">
    <xsd:restriction base="xsd:string">
      <xsd:pattern value="([a-z0-9-]+)?:?([a-z0-9-]+):([a-z0-9\.-]+):([a-z0-9-]+)?:([a-z0-9-]+)" />
    </xsd:restriction>
  </xsd:simpleType>

  <xsd:simpleType name="schemaCurieMajorRegex">
    <xsd:restriction base="xsd:string">
      <xsd:pattern value="([a-z0-9-]+)?:?([a-z0-9-]+):([a-z0-9\.-]+):([a-z0-9-]+)?:([a-z0-9-]+)(:v?([0-9]+)(-[0-9]+-[0-9]+)?)?" />
    </xsd:restriction>
  </xsd:simpleType>

  <xsd:simpleType name="schemaIdentifierRegex">
    <xsd:restriction base="xsd:string">
      <xsd:pattern value="([a-z0-9-]+)?:?([a-z0-9-]+):([a-z0-9\.-]+):([a-z0-9-]+)?:([a-z0-9-]+)(:v?([0-9]+)(-[0-9]+-[0-9]+)?)?" />
    </xsd:restriction>
  </xsd:simpleType>

  <xsd:simpleType name="fieldType">
    <xsd:restriction base="xsd:token">
      <xsd:enumeration value="big-int" />
      <xsd:enumeration value="binary" />
      <xsd:enumeration value="blob" />
      <xsd:enumeration value="boolean" />
      <xsd:enumeration value="date" />
      <xsd:enumeration value="date-time" />
      <xsd:enumeration value="decimal" />
      <xsd:enumeration value="dynamic-field" />
      <xsd:enumeration value="float" />
      <xsd:enumeration value="geo-point" />
      <xsd:enumeration value="identifier" />
      <xsd:enumeration value="int" />
      <xsd:enumeration value="int-enum" />
      <xsd:enumeration value="medium-blob" />
      <xsd:enumeration value="medium-int" />
      <xsd:enumeration value="medium-text" />
      <xsd:enumeration value="message" />
      <xsd:enumeration value="message-ref" />
      <xsd:enumeration value="microtime" />
      <xsd:enumeration value="signed-big-int" />
      <xsd:enumeration value="signed-int" />
      <xsd:enumeration value="signed-medium-int" />
      <xsd:enumeration value="signed-small-int" />
      <xsd:enumeration value="signed-tiny-int" />
      <xsd:enumeration value="small-int" />
      <xsd:enumeration value="string" />
      <xsd:enumeration value="string-enum" />
      <xsd:enumeration value="text" />
      <xsd:enumeration value="time-uuid" />
      <xsd:enumeration value="timestamp" />
      <xsd:enumeration value="tiny-int" />
      <xsd:enumeration value="trinary" />
      <xsd:enumeration value="uuid" />
    </xsd:restriction>
  </xsd:simpleType>

  <xsd:simpleType name="fieldRule">
    <xsd:restriction base="xsd:token">
      <xsd:enumeration value="single" />
      <xsd:enumeration value="set" />
      <xsd:enumeration value="list" />
      <xsd:enumeration value="map" />
    </xsd:restriction>
  </xsd:simpleType>

  <xsd:simpleType name="fieldFormat">
    <xsd:restriction base="xsd:token">
      <xsd:enumeration value="unknown" />
      <xsd:enumeration value="date" />
      <xsd:enumeration value="date-time" />
      <xsd:enumeration value="email" />
      <xsd:enumeration value="hashtag" />
      <xsd:enumeration value="hostname" />
      <xsd:enumeration value="ipv4" />
      <xsd:enumeration value="ipv6" />
      <xsd:enumeration value="slug" />
      <xsd:enumeration value="uri" />
      <xsd:enumeration value="url" />
      <xsd:enumeration value="uuid" />
    </xsd:restriction>
  </xsd:simpleType>

  <xsd:simpleType name="fakerMethod">
    <xsd:restriction base="xsd:token">
      <xsd:enumeration value="address.zipCode" />
      <xsd:enumeration value="address.city" />
      <xsd:enumeration value="address.cityPrefix" />
      <xsd:enumeration value="address.citySuffix" />
      <xsd:enumeration value="address.streetName" />
      <xsd:enumeration value="address.streetAddress" />
      <xsd:enumeration value="address.streetSuffix" />
      <xsd:enumeration value="address.streetPrefix" />
      <xsd:enumeration value="address.secondaryAddress" />
      <xsd:enumeration value="address.county" />
      <xsd:enumeration value="address.country" />
      <xsd:enumeration value="address.countryCode" />
      <xsd:enumeration value="address.state" />
      <xsd:enumeration value="address.stateAbbr" />
      <xsd:enumeration value="address.latitude" />
      <xsd:enumeration value="address.longitude" />
      <xsd:enumeration value="commerce.color" />
      <xsd:enumeration value="commerce.department" />
      <xsd:enumeration value="commerce.productName" />
      <xsd:enumeration value="commerce.price" />
      <xsd:enumeration value="commerce.productAdjective" />
      <xsd:enumeration value="commerce.productMaterial" />
      <xsd:enumeration value="commerce.product" />
      <xsd:enumeration value="company.suffixes" />
      <xsd:enumeration value="company.companyName" />
      <xsd:enumeration value="company.companySuffix" />
      <xsd:enumeration value="company.catchPhrase" />
      <xsd:enumeration value="company.bs" />
      <xsd:enumeration value="company.catchPhraseAdjective" />
      <xsd:enumeration value="company.catchPhraseDescriptor" />
      <xsd:enumeration value="company.catchPhraseNoun" />
      <xsd:enumeration value="company.bsAdjective" />
      <xsd:enumeration value="company.bsBuzz" />
      <xsd:enumeration value="company.bsNoun" />
      <xsd:enumeration value="date.past" />
      <xsd:enumeration value="date.future" />
      <xsd:enumeration value="date.between" />
      <xsd:enumeration value="date.recent" />
      <xsd:enumeration value="date.month" />
      <xsd:enumeration value="date.weekday" />
      <xsd:enumeration value="fake" />
      <xsd:enumeration value="finance.account" />
      <xsd:enumeration value="finance.accountName" />
      <xsd:enumeration value="finance.mask" />
      <xsd:enumeration value="finance.amount" />
      <xsd:enumeration value="finance.transactionType" />
      <xsd:enumeration value="finance.currencyCode" />
      <xsd:enumeration value="finance.currencyName" />
      <xsd:enumeration value="finance.currencySymbol" />
      <xsd:enumeration value="finance.bitcoinAddress" />
      <xsd:enumeration value="hacker.abbreviation" />
      <xsd:enumeration value="hacker.adjective" />
      <xsd:enumeration value="hacker.noun" />
      <xsd:enumeration value="hacker.verb" />
      <xsd:enumeration value="hacker.ingverb" />
      <xsd:enumeration value="hacker.phrase" />
      <xsd:enumeration value="helpers.randomize" />
      <xsd:enumeration value="helpers.slugify" />
      <xsd:enumeration value="helpers.replaceSymbolWithNumber" />
      <xsd:enumeration value="helpers.replaceSymbols" />
      <xsd:enumeration value="helpers.shuffle" />
      <xsd:enumeration value="helpers.mustache" />
      <xsd:enumeration value="helpers.createCard" />
      <xsd:enumeration value="helpers.contextualCard" />
      <xsd:enumeration value="helpers.userCard" />
      <xsd:enumeration value="helpers.createTransaction" />
      <xsd:enumeration value="image.image" />
      <xsd:enumeration value="image.avatar" />
      <xsd:enumeration value="image.imageUrl" />
      <xsd:enumeration value="image.abstract" />
      <xsd:enumeration value="image.animals" />
      <xsd:enumeration value="image.business" />
      <xsd:enumeration value="image.cats" />
      <xsd:enumeration value="image.city" />
      <xsd:enumeration value="image.food" />
      <xsd:enumeration value="image.nightlife" />
      <xsd:enumeration value="image.fashion" />
      <xsd:enumeration value="image.people" />
      <xsd:enumeration value="image.nature" />
      <xsd:enumeration value="image.sports" />
      <xsd:enumeration value="image.technics" />
      <xsd:enumeration value="image.transport" />
      <xsd:enumeration value="internet.avatar" />
      <xsd:enumeration value="internet.email" />
      <xsd:enumeration value="internet.exampleEmail" />
      <xsd:enumeration value="internet.userName" />
      <xsd:enumeration value="internet.protocol" />
      <xsd:enumeration value="internet.url" />
      <xsd:enumeration value="internet.domainName" />
      <xsd:enumeration value="internet.domainSuffix" />
      <xsd:enumeration value="internet.domainWord" />
      <xsd:enumeration value="internet.ip" />
      <xsd:enumeration value="internet.userAgent" />
      <xsd:enumeration value="internet.color" />
      <xsd:enumeration value="internet.mac" />
      <xsd:enumeration value="internet.password" />
      <xsd:enumeration value="lorem.word" />
      <xsd:enumeration value="lorem.words" />
      <xsd:enumeration value="lorem.sentence" />
      <xsd:enumeration value="lorem.sentences" />
      <xsd:enumeration value="lorem.paragraph" />
      <xsd:enumeration value="lorem.paragraphs" />
      <xsd:enumeration value="lorem.text" />
      <xsd:enumeration value="lorem.lines" />
      <xsd:enumeration value="name.firstName" />
      <xsd:enumeration value="name.lastName" />
      <xsd:enumeration value="name.findName" />
      <xsd:enumeration value="name.jobTitle" />
      <xsd:enumeration value="name.prefix" />
      <xsd:enumeration value="name.suffix" />
      <xsd:enumeration value="name.title" />
      <xsd:enumeration value="name.jobDescriptor" />
      <xsd:enumeration value="name.jobArea" />
      <xsd:enumeration value="name.jobType" />
      <xsd:enumeration value="phone.phoneNumber" />
      <xsd:enumeration value="phone.phoneNumberFormat" />
      <xsd:enumeration value="phone.phoneFormats" />
      <xsd:enumeration value="random.number" />
      <xsd:enumeration value="random.arrayElement" />
      <xsd:enumeration value="random.objectElement" />
      <xsd:enumeration value="random.uuid" />
      <xsd:enumeration value="random.boolean" />
      <xsd:enumeration value="random.word" />
      <xsd:enumeration value="random.words" />
      <xsd:enumeration value="random.image" />
      <xsd:enumeration value="random.locale" />
      <xsd:enumeration value="random.alphaNumeric" />
      <xsd:enumeration value="system.fileName" />
      <xsd:enumeration value="system.commonFileName" />
      <xsd:enumeration value="system.mimeType" />
      <xsd:enumeration value="system.commonFileType" />
      <xsd:enumeration value="system.commonFileExt" />
      <xsd:enumeration value="system.fileType" />
      <xsd:enumeration value="system.fileExt" />
      <xsd:enumeration value="system.directoryPath" />
      <xsd:enumeration value="system.filePath" />
      <xsd:enumeration value="system.semver" />
    </xsd:restriction>
  </xsd:simpleType>
</xsd:schema>