Skip to content

Instantly share code, notes, and snippets.

@SantosJMM
Last active January 13, 2022 03:05
Show Gist options
  • Save SantosJMM/1d5a37f868f6042427fee928ed9a6ab9 to your computer and use it in GitHub Desktop.
Save SantosJMM/1d5a37f868f6042427fee928ed9a6ab9 to your computer and use it in GitHub Desktop.
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
<!-- START MY -->
<xs:element name="div">
<xs:complexType>
<xs:sequence>
<xs:group ref="overload" />
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element ref="field" />
<xs:element ref="xpath" />
<xs:element ref="separator" />
<xs:element ref="button" />
<xs:element ref="group" />
<xs:element ref="filter" />
<xs:element ref="html" />
<xs:element ref="newline" />
<xs:element ref="h1" />
<xs:element ref="span" />
<xs:element ref="label" />
</xs:choice>
</xs:sequence>
<xs:attribute name="class" />
<xs:attribute name="name" />
</xs:complexType>
</xs:element>
<xs:element name="span">
<xs:complexType mixed="true">
<xs:attribute name="class" type="xs:string" />
</xs:complexType>
</xs:element>
<!-- <xs:element name="label"> -->
<!-- <xs:complexType> -->
<!-- <xs:attribute name="for" type="xs:string" /> -->
<!-- </xs:complexType> -->
<!-- </xs:element> -->
<xs:element name="h1">
<xs:complexType>
<xs:sequence>
<xs:group ref="overload" />
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element ref="field" />
<xs:element ref="xpath" />
<xs:element ref="separator" />
<xs:element ref="button" />
<xs:element ref="group" />
<xs:element ref="filter" />
<xs:element ref="html" />
<xs:element ref="newline" />
</xs:choice>
</xs:sequence>
<xs:attribute name="attrs"></xs:attribute>
</xs:complexType>
</xs:element>
<xs:element name="form"></xs:element>
<!-- END MY -->
<!-- START COMMON -->
<xs:group name="overload">
<xs:sequence>
<xs:element minOccurs="0" maxOccurs="unbounded" ref="attribute" />
</xs:sequence>
</xs:group>
<xs:element name="attribute">
<xs:complexType mixed="true">
<xs:attribute name="name" use="required" />
</xs:complexType>
</xs:element>
<xs:attributeGroup name="overload">
<xs:attribute name="position">
<xs:simpleType>
<xs:restriction base="xs:token">
<xs:enumeration value="before" />
<xs:enumeration value="after" />
<xs:enumeration value="inside" />
<xs:enumeration value="replace" />
<xs:enumeration value="attributes" />
</xs:restriction>
</xs:simpleType>
</xs:attribute>
</xs:attributeGroup>
<xs:attributeGroup name="modifiable">
<xs:attribute name="modifiers" />
</xs:attributeGroup>
<xs:attributeGroup name="access_rights">
<xs:attribute name="groups" />
</xs:attributeGroup>
<xs:group name="container">
<xs:sequence>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element ref="field" />
<xs:element ref="group" />
<xs:element ref="button" />
<xs:element ref="label" />
<xs:element ref="separator" />
<xs:element ref="image" />
<xs:element ref="filter" />
<xs:element ref="html" />
<xs:element ref="newline" />
<xs:element ref="h1" />
<xs:element ref="div" />
<xs:element ref="span" />
</xs:choice>
</xs:sequence>
</xs:group>
<xs:element name="newline">
<xs:complexType />
</xs:element>
<xs:attributeGroup name="container">
<xs:attribute name="col" />
<xs:attribute name="class" />
</xs:attributeGroup>
<xs:element name="image">
<xs:complexType>
<xs:attribute name="name" use="required" />
</xs:complexType>
</xs:element>
<xs:element name="html">
<xs:complexType mixed="true">
<xs:group minOccurs="0" maxOccurs="unbounded" ref="any" />
</xs:complexType>
</xs:element>
<xs:element name="label">
<xs:complexType mixed="true">
<xs:sequence>
<xs:group ref="overload" />
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element ref="field" />
<xs:element ref="group" />
<xs:element ref="button" />
<xs:element ref="label" />
<xs:element ref="separator" />
<xs:element ref="image" />
<xs:element ref="filter" />
<xs:element ref="html" />
<xs:element ref="newline" />
</xs:choice>
</xs:sequence>
<xs:attributeGroup ref="overload" />
<xs:attributeGroup ref="access_rights" />
<xs:attributeGroup ref="modifiable" />
<xs:attribute name="invisible" />
<xs:attribute name="align" />
<xs:attribute name="nolabel" />
<xs:attribute name="colspan" />
<xs:attribute name="string" />
<xs:attribute name="angle" />
<xs:attribute name="fill" />
<xs:attribute name="help" />
<xs:attribute name="width" />
<xs:attribute name="wrap" />
<xs:attribute name="name" />
<xs:attribute name="for" />
</xs:complexType>
</xs:element>
<xs:group name="any">
<xs:sequence>
<xs:any processContents="skip" />
</xs:sequence>
</xs:group>
<xs:element name="separator">
<xs:complexType>
<xs:sequence>
<xs:group ref="overload" />
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element ref="separator" />
<xs:element ref="button" />
<xs:element ref="field" />
<xs:element ref="label" />
<xs:element ref="group" />
<xs:element ref="filter" />
<xs:element ref="html" />
<xs:element ref="newline" />
</xs:choice>
</xs:sequence>
<xs:attributeGroup ref="overload" />
<xs:attributeGroup ref="access_rights" />
<xs:attributeGroup ref="modifiable" />
<xs:attribute name="invisible" />
<xs:attribute name="name" />
<xs:attribute name="colspan" />
<xs:attribute name="rowspan" />
<xs:attribute name="string" />
<xs:attribute name="col" />
<xs:attribute name="select" />
<xs:attribute name="orientation" />
</xs:complexType>
</xs:element>
<xs:element name="xpath">
<xs:complexType>
<xs:sequence>
<xs:group ref="overload" />
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:group ref="any" />
<xs:element ref="button" />
<xs:element ref="html" />
</xs:choice>
</xs:sequence>
<xs:attribute name="expr" />
<xs:attributeGroup ref="overload" />
</xs:complexType>
</xs:element>
<!-- <xs:element name="data"> -->
<!-- <xs:complexType> -->
<!-- <xs:choice minOccurs="0" maxOccurs="unbounded"> -->
<!-- <xs:element ref="field" /> -->
<!-- <xs:element ref="label" /> -->
<!-- <xs:element ref="separator" /> -->
<!-- <xs:element ref="xpath" /> -->
<!-- <xs:element ref="button" /> -->
<!-- <xs:element ref="group" /> -->
<!-- <xs:element ref="filter" /> -->
<!-- <xs:element ref="html" /> -->
<!-- <xs:element ref="newline" /> -->
<!-- </xs:choice> -->
<!-- </xs:complexType> -->
<!-- </xs:element> -->
<xs:element name="field">
<xs:complexType mixed="true">
<xs:sequence>
<xs:group ref="overload" />
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element ref="data" />
<xs:element ref="field" />
<xs:element ref="label" />
<xs:element ref="separator" />
<xs:element ref="xpath" />
<xs:element ref="button" />
<xs:element ref="group" />
<xs:element ref="filter" />
<xs:element ref="html" />
<xs:element ref="newline" />
<xs:element ref="tree" />
<xs:element ref="search" />
<xs:element ref="div" />
<xs:element ref="form" />
<xs:group maxOccurs="unbounded" ref="any" />
<xs:element maxOccurs="unbounded" ref="value" />
</xs:choice>
</xs:sequence>
<xs:attribute name="name" use="required" />
<xs:attributeGroup ref="overload" />
<xs:attributeGroup ref="access_rights" />
<xs:attributeGroup ref="modifiable" />
<xs:attribute name="domain_filter" />
<xs:attribute name="attrs" />
<xs:attribute name="class" />
<xs:attribute name="string" />
<xs:attribute name="completion" />
<xs:attribute name="width" />
<xs:attribute name="type" />
<xs:attribute name="ref" />
<xs:attribute name="eval" />
<xs:attribute name="search" />
<xs:attribute name="model" />
<xs:attribute name="use" />
<xs:attribute name="on_change" />
<xs:attribute name="domain" />
<xs:attribute name="filter_domain" />
<xs:attribute name="invisible" />
<xs:attribute name="password" />
<xs:attribute name="comparator" />
<xs:attribute name="sum" />
<xs:attribute name="bold" />
<xs:attribute name="avg" />
<xs:attribute name="select" />
<xs:attribute name="group" />
<xs:attribute name="color" />
<xs:attribute name="groupby" />
<xs:attribute name="disable_counters" />
<xs:attribute name="operator" />
<xs:attribute name="colspan" />
<xs:attribute name="nolabel" />
<xs:attribute name="required" />
<xs:attribute name="readonly" />
<xs:attribute name="view_mode" />
<xs:attribute name="widget" />
<xs:attribute name="context" />
<xs:attribute name="states" />
<xs:attribute name="digits" />
<xs:attribute name="icon" />
<xs:attribute name="mode" />
<xs:attribute name="size" />
<xs:attribute name="filename" />
<xs:attribute name="height" />
<xs:attribute name="rowspan" />
<xs:attribute name="align" />
<xs:attribute name="selection" />
<xs:attribute name="default_focus" />
<xs:attribute name="filters" />
<xs:attribute name="statusbar_visible" />
<xs:attribute name="can_create" />
<xs:attribute name="can_write" />
<xs:attribute name="interval" />
<xs:attribute name="avatar_field" />
<xs:attribute name="write_model" />
<xs:attribute name="write_field" />
<xs:attribute name="text" />
<xs:attribute name="optional" />
<xs:attribute name="kanban_view_ref" />
<xs:attribute name="force_save">
<xs:simpleType>
<xs:restriction base="xs:token">
<xs:enumeration value="1" />
<xs:enumeration value="0" />
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="options" />
<xs:attribute name="placeholder" />
</xs:complexType>
</xs:element>
<xs:element name="group">
<xs:complexType>
<xs:sequence>
<xs:group ref="overload" />
<xs:element minOccurs="0" maxOccurs="unbounded" ref="field" />
<xs:group ref="container" />
</xs:sequence>
<xs:attributeGroup ref="overload" />
<xs:attributeGroup ref="access_rights" />
<xs:attributeGroup ref="modifiable" />
<xs:attribute name="attrs" />
<xs:attribute name="colspan" />
<xs:attribute name="rowspan" />
<xs:attribute name="expand" />
<xs:attribute name="states" />
<xs:attribute name="string" />
<xs:attribute name="fill" />
<xs:attribute name="height" />
<xs:attribute name="width" />
<xs:attribute name="name" />
<xs:attribute name="color" />
<xs:attribute name="invisible" />
<xs:attributeGroup ref="container" />
</xs:complexType>
</xs:element>
<xs:element name="button">
<xs:complexType>
<xs:sequence>
<xs:group ref="overload" />
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element ref="field" />
<xs:element ref="xpath" />
<xs:element ref="separator" />
<xs:element ref="button" />
<xs:element ref="group" />
<xs:element ref="filter" />
<xs:element ref="html" />
<xs:element ref="newline" />
</xs:choice>
</xs:sequence>
<xs:attributeGroup ref="overload" />
<xs:attributeGroup ref="access_rights" />
<xs:attributeGroup ref="modifiable" />
<xs:attribute name="attrs" />
<xs:attribute name="invisible" />
<xs:attribute name="disabled" />
<xs:attribute name="name" />
<xs:attribute name="icon" />
<xs:attribute name="string" />
<xs:attribute name="states" />
<xs:attribute name="type" />
<xs:attribute name="special" />
<xs:attribute name="align" />
<xs:attribute name="colspan" />
<xs:attribute name="target" />
<xs:attribute name="readonly" />
<xs:attribute name="context" />
<xs:attribute name="confirm" />
<xs:attribute name="help" />
<xs:attribute name="class" />
<xs:attribute name="default_focus" />
<xs:attribute name="tabindex" />
<xs:attribute name="title" />
<xs:attribute name="aria-label" />
<xs:attribute name="aria-pressed" />
</xs:complexType>
</xs:element>
<xs:element name="filter">
<xs:complexType>
<xs:sequence>
<xs:group ref="overload" />
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element ref="field" />
<xs:element ref="xpath" />
<xs:element ref="separator" />
<xs:element ref="button" />
<xs:element ref="filter" />
<xs:element ref="html" />
<xs:element ref="newline" />
</xs:choice>
</xs:sequence>
<xs:attributeGroup ref="overload" />
<xs:attributeGroup ref="access_rights" />
<xs:attributeGroup ref="modifiable" />
<xs:attribute name="name" use="required" />
<xs:attribute name="attrs" />
<xs:attribute name="icon" />
<xs:attribute name="invisible" />
<xs:attribute name="separator" />
<xs:attribute name="string" />
<xs:attribute name="type" />
<xs:attribute name="align" />
<xs:attribute name="colspan" />
<xs:attribute name="readonly" />
<xs:attribute name="context" />
<xs:attribute name="help" />
<xs:attribute name="domain" />
<xs:attribute name="date" />
<xs:attribute name="default_period" />
</xs:complexType>
</xs:element>
<xs:element name="create">
<xs:complexType>
<xs:group ref="overload" />
<xs:attributeGroup ref="overload" />
<xs:attribute name="string" use="required" />
<xs:attribute name="context" use="required" />
</xs:complexType>
</xs:element>
<xs:element name="control">
<xs:complexType>
<xs:sequence>
<xs:group ref="overload" />
<xs:element maxOccurs="unbounded" ref="create" />
</xs:sequence>
<xs:attributeGroup ref="overload" />
</xs:complexType>
</xs:element>
<!-- END COMMON -->
<!-- START IMPORT_XML -->
<xs:attributeGroup name="env">
<xs:attribute name="uid" />
<xs:attribute name="context" />
</xs:attributeGroup>
<xs:simpleType name="views">
<xs:restriction base="xs:string">
<xs:pattern value="([a-z]+(,[a-z]+)*)?" />
</xs:restriction>
</xs:simpleType>
<!-- <xs:group name="any"> -->
<!-- <xs:sequence> -->
<!-- <xs:any processContents="skip" /> -->
<!-- </xs:sequence> -->
<!-- </xs:group> -->
<xs:element name="value">
<xs:complexType mixed="true">
<xs:attribute name="name" />
<xs:attribute name="model" />
<xs:attribute name="search" />
<xs:attribute name="eval" />
<xs:attribute name="type" />
<xs:attribute name="file" />
<xs:attribute name="use" />
</xs:complexType>
</xs:element>
<xs:element name="function">
<xs:complexType>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element ref="value" />
<xs:element ref="function" />
</xs:choice>
<xs:attribute name="model" use="required" />
<xs:attribute name="name" use="required" />
<xs:attributeGroup ref="env" />
<xs:attribute name="eval" />
</xs:complexType>
</xs:element>
<xs:element name="report">
<xs:complexType>
<xs:attribute name="id" />
<xs:attribute name="string" use="required" />
<xs:attribute name="model" use="required" />
<xs:attribute name="name" use="required" />
<xs:attribute name="print_report_name" />
<xs:attribute name="report_type" />
<xs:attribute name="multi" />
<xs:attribute name="menu" />
<xs:attribute name="keyword" />
<xs:attribute name="file" />
<xs:attribute name="xml" />
<xs:attribute name="parser" />
<xs:attribute name="auto" />
<xs:attribute name="header" />
<xs:attribute name="attachment" />
<xs:attribute name="attachment_use" />
<xs:attribute name="groups" />
<xs:attribute name="paperformat" />
<xs:attribute name="usage" />
</xs:complexType>
</xs:element>
<!-- <xs:element name="field"> -->
<!-- <xs:complexType mixed="true"> -->
<!-- <xs:choice minOccurs="0"> -->
<!-- <xs:element maxOccurs="unbounded" ref="value" /> -->
<!-- <xs:group maxOccurs="unbounded" ref="any" /> -->
<!-- </xs:choice> -->
<!-- <xs:attribute name="name" use="required" /> -->
<!-- <xs:attribute name="type"> -->
<!-- <xs:simpleType> -->
<!-- <xs:restriction base="xs:token"> -->
<!-- <xs:enumeration value="base64" /> -->
<!-- <xs:enumeration value="char" /> -->
<!-- <xs:enumeration value="file" /> -->
<!-- <xs:enumeration value="int" /> -->
<!-- <xs:enumeration value="float" /> -->
<!-- <xs:enumeration value="list" /> -->
<!-- <xs:enumeration value="tuple" /> -->
<!-- <xs:enumeration value="html" /> -->
<!-- <xs:enumeration value="xml" /> -->
<!-- </xs:restriction> -->
<!-- </xs:simpleType> -->
<!-- </xs:attribute> -->
<!-- <xs:attribute name="file" /> -->
<!-- <xs:attribute name="ref" /> -->
<!-- <xs:attribute name="eval" /> -->
<!-- <xs:attribute name="model" /> -->
<!-- <xs:attribute name="search" /> -->
<!-- <xs:attribute name="use" /> -->
<!-- </xs:complexType> -->
<!-- </xs:element> -->
<xs:element name="record">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" maxOccurs="unbounded" ref="field" />
</xs:sequence>
<xs:attribute name="id" />
<xs:attribute name="forcecreate" />
<xs:attribute name="model" use="required" />
<xs:attributeGroup ref="env" />
</xs:complexType>
</xs:element>
<xs:element name="template">
<xs:complexType mixed="true">
<xs:group minOccurs="0" maxOccurs="unbounded" ref="any" />
<xs:attribute name="id" />
<xs:attribute name="t-name" />
<xs:attribute name="name" />
<xs:attribute name="forcecreate" />
<xs:attribute name="context" />
<xs:attribute name="priority" />
<xs:attribute name="key" />
<xs:attribute name="website_id" />
<xs:attribute name="track" />
<xs:attribute name="inherit_id" />
<xs:attribute name="primary">
<xs:simpleType>
<xs:restriction base="xs:token">
<xs:enumeration value="True" />
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="groups" />
<xs:attribute name="active" />
<xs:attribute name="customize_show" />
</xs:complexType>
</xs:element>
<xs:element name="delete">
<xs:complexType>
<xs:attribute name="model" use="required" />
<xs:attribute name="id" />
<xs:attribute name="search" />
</xs:complexType>
</xs:element>
<xs:element name="menuitem">
<xs:complexType>
<xs:attribute name="id" />
<xs:attribute name="name" />
<xs:attribute name="parent" />
<xs:attribute name="action" />
<xs:attribute name="sequence" />
<xs:attribute name="groups" />
<xs:attribute name="active" />
<xs:attribute name="icon" />
<xs:attribute name="web_icon" />
<xs:attribute name="web_icon_hover" />
<xs:attribute name="string" />
</xs:complexType>
</xs:element>
<xs:element name="act_window">
<xs:complexType>
<xs:attribute name="id" use="required" />
<xs:attribute name="name" use="required" />
<xs:attribute name="res_model" use="required" />
<xs:attribute name="domain" />
<xs:attribute name="context" />
<xs:attribute name="view_id" />
<xs:attribute name="view_mode" />
<xs:attribute name="target" />
<xs:attribute name="groups" />
<xs:attribute name="limit" />
<xs:attribute name="usage" />
<xs:attribute name="binding_model" />
<xs:attribute name="binding_type">
<xs:simpleType>
<xs:restriction base="xs:token">
<xs:enumeration value="action" />
<xs:enumeration value="report" />
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="binding_views" type="views" />
</xs:complexType>
</xs:element>
<xs:element name="odoo_openerp_data" abstract="true">
<xs:complexType mixed="true">
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element ref="odoo_openerp_data" />
<xs:element ref="menuitem" />
<xs:element ref="record" />
<xs:element ref="template" />
<xs:element ref="delete" />
<xs:element ref="act_window" />
<xs:element ref="report" />
<xs:element ref="function" />
<xs:element ref="tree" />
<xs:element ref="search" />
</xs:choice>
<xs:attribute name="noupdate" />
<xs:attributeGroup ref="env" />
</xs:complexType>
</xs:element>
<xs:element name="odoo" substitutionGroup="odoo_openerp_data" />
<xs:element name="openerp" substitutionGroup="odoo_openerp_data" />
<xs:element name="data" substitutionGroup="odoo_openerp_data" />
<!-- END IMPORT_XML -->
<!-- TREE VIEW -->
<xs:element name="groupby">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" maxOccurs="unbounded" ref="field" />
<xs:element minOccurs="0" maxOccurs="unbounded" ref="button" />
</xs:sequence>
<xs:attribute name="name" use="required" />
<xs:attribute name="expand" />
</xs:complexType>
</xs:element>
<xs:element name="tree">
<xs:complexType>
<xs:sequence>
<xs:group ref="overload" />
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element ref="control" />
<xs:element ref="field" />
<xs:element ref="separator" />
<xs:element ref="tree" />
<xs:element ref="groupby" />
<xs:element ref="button" />
<xs:element ref="filter" />
<xs:element ref="html" />
<xs:element ref="newline" />
</xs:choice>
</xs:sequence>
<xs:attributeGroup ref="overload" />
<xs:attribute name="name" />
<xs:attribute name="create" />
<xs:attribute name="delete" />
<xs:attribute name="edit" />
<xs:attribute name="multi_edit" />
<xs:attribute name="export_xlsx" />
<xs:attribute name="duplicate" />
<xs:attribute name="import" />
<xs:attribute name="string" />
<xs:attribute name="class" />
<xs:attribute name="js_class" />
<xs:attribute name="default_order" />
<xs:attribute name="decoration-bf" />
<xs:attribute name="decoration-it" />
<xs:attribute name="decoration-danger" />
<xs:attribute name="decoration-info" />
<xs:attribute name="decoration-muted" />
<xs:attribute name="decoration-primary" />
<xs:attribute name="decoration-success" />
<xs:attribute name="decoration-warning" />
<xs:attribute name="banner_route" />
<xs:attribute name="limit" type="xs:int" />
<xs:attribute name="groups_limit" type="xs:int" />
<xs:attribute name="editable">
<xs:simpleType>
<xs:restriction base="xs:token">
<xs:enumeration value="top" />
<xs:enumeration value="bottom" />
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="expand" />
</xs:complexType>
</xs:element>
<!-- SEARCH VIEW -->
<xs:element name="searchpanel">
<xs:complexType>
<xs:sequence>
<xs:group ref="overload" />
<xs:element minOccurs="0" maxOccurs="unbounded" ref="field" />
</xs:sequence>
<xs:attributeGroup ref="overload" />
<xs:attribute name="view_types" />
<xs:attribute name="class" />
</xs:complexType>
</xs:element>
<xs:element name="search">
<xs:complexType>
<xs:sequence>
<xs:group ref="overload" />
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element ref="field" />
<xs:element ref="group" />
<xs:element ref="separator" />
<xs:element ref="filter" />
<xs:element ref="newline" />
<xs:element ref="searchpanel" />
</xs:choice>
</xs:sequence>
<xs:attributeGroup ref="overload" />
<xs:attribute name="string" />
</xs:complexType>
</xs:element>
</xs:schema>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment