changeset 21c4acd056a7 in trytond:default
details: https://hg.tryton.org/trytond?cmd=changeset;node=21c4acd056a7
description:
        Update rng with rnc2rng

        issue8005
        review64551002
diffstat:

 setup.py                   |   26 ++-
 trytond/ir/ui/board.rng    |  323 ++++++++++++++++++++-------
 trytond/ir/ui/calendar.rng |   51 +++-
 trytond/ir/ui/form.rng     |  515 +++++++++++++++++++++++++++++++++-----------
 trytond/ir/ui/graph.rng    |   84 +++++-
 trytond/ir/ui/tree.rng     |  180 +++++++++++---
 trytond/tryton.rng         |  216 ++++++++++++++++++
 7 files changed, 1099 insertions(+), 296 deletions(-)

diffs (2740 lines):

diff -r 9c2b17ecf341 -r 21c4acd056a7 setup.py
--- a/setup.py  Mon Feb 04 22:23:12 2019 +0100
+++ b/setup.py  Mon Feb 04 22:46:32 2019 +0100
@@ -2,11 +2,13 @@
 # This file is part of Tryton.  The COPYRIGHT file at the top level of
 # this repository contains the full copyright notices and license terms.
 
-from setuptools import setup, find_packages
+from setuptools import setup, find_packages, Command
+import glob
 import os
 import re
 import io
 import platform
+import subprocess
 
 
 def read(fname):
@@ -20,6 +22,25 @@
     return re.search('__version__ = "([0-9.]*)"', init).group(1)
 
 
+class rnc2rng(Command):
+    description = "Generate rng files from rnc"
+    user_options = []
+
+    def initialize_options(self):
+        pass
+
+    def finalize_options(self):
+        pass
+
+    def run(self):
+        os.chdir(os.path.dirname(__file__) or '.')
+        for path in glob.glob('**/*.rnc', recursive=True):
+            root, ext = os.path.splitext(path)
+            cmd = ['rnc2rng', path, root + '.rng']
+            self.announce(' '.join(cmd))
+            subprocess.run(cmd)
+
+
 version = get_version()
 major_version, minor_version, _ = version.split('.', 2)
 major_version = int(major_version)
@@ -121,4 +142,7 @@
     zip_safe=False,
     test_suite='trytond.tests',
     test_loader='trytond.test_loader:Loader',
+    cmdclass={
+        'update_rng': rnc2rng,
+        },
     )
diff -r 9c2b17ecf341 -r 21c4acd056a7 trytond/ir/ui/board.rng
--- a/trytond/ir/ui/board.rng   Mon Feb 04 22:23:12 2019 +0100
+++ b/trytond/ir/ui/board.rng   Mon Feb 04 22:46:32 2019 +0100
@@ -1,7 +1,9 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<grammar xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"; 
xmlns="http://relaxng.org/ns/structure/1.0";>
+<grammar xmlns="http://relaxng.org/ns/structure/1.0";
+         xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0";>
   <define name="board">
-    <element name="board">
+    <element>
+      <name ns="">board</name>
       <ref name="attlist.board"/>
       <zeroOrMore>
         <choice>
@@ -20,26 +22,37 @@
   </define>
   <define name="attlist.board" combine="interleave">
     <optional>
-      <attribute name="col" a:defaultValue="4"/>
+      <attribute a:defaultValue="4">
+        <name ns="">col</name>
+        <text/>
+      </attribute>
     </optional>
   </define>
   <define name="image">
-    <element name="image">
+    <element>
+      <name ns="">image</name>
       <ref name="attlist.image"/>
       <empty/>
     </element>
   </define>
   <define name="attlist.image" combine="interleave">
-    <attribute name="name"/>
+    <attribute>
+      <name ns="">name</name>
+      <text/>
+    </attribute>
   </define>
   <define name="attlist.image" combine="interleave">
     <optional>
-      <attribute name="colspan" a:defaultValue="1"/>
+      <attribute a:defaultValue="1">
+        <name ns="">colspan</name>
+        <text/>
+      </attribute>
     </optional>
   </define>
   <define name="attlist.image" combine="interleave">
     <optional>
-      <attribute name="yexpand" a:defaultValue="0">
+      <attribute a:defaultValue="0">
+        <name ns="">yexpand</name>
         <choice>
           <value>0</value>
           <value>1</value>
@@ -49,7 +62,8 @@
   </define>
   <define name="attlist.image" combine="interleave">
     <optional>
-      <attribute name="yfill" a:defaultValue="0">
+      <attribute a:defaultValue="0">
+        <name ns="">yfill</name>
         <choice>
           <value>0</value>
           <value>1</value>
@@ -59,7 +73,19 @@
   </define>
   <define name="attlist.image" combine="interleave">
     <optional>
-      <attribute name="xexpand" a:defaultValue="0">
+      <attribute a:defaultValue="0">
+        <name ns="">xexpand</name>
+        <choice>
+          <value>0</value>
+          <value>1</value>
+        </choice>
+      </attribute>
+    </optional>
+  </define>
+  <define name="attlist.image" combine="interleave">
+    <optional>
+      <attribute a:defaultValue="0">
+        <name ns="">xfill</name>
         <choice>
           <value>0</value>
           <value>1</value>
@@ -69,59 +95,75 @@
   </define>
   <define name="attlist.image" combine="interleave">
     <optional>
-      <attribute name="xfill" a:defaultValue="0">
-        <choice>
-          <value>0</value>
-          <value>1</value>
-        </choice>
+      <attribute>
+        <name ns="">help</name>
+        <text/>
       </attribute>
     </optional>
   </define>
   <define name="attlist.image" combine="interleave">
     <optional>
-      <attribute name="help"/>
-    </optional>
-  </define>
-  <define name="attlist.image" combine="interleave">
-    <optional>
-      <attribute name="states"/>
+      <attribute>
+        <name ns="">states</name>
+        <text/>
+      </attribute>
     </optional>
   </define>
   <define name="separator">
-    <element name="separator">
+    <element>
+      <name ns="">separator</name>
       <ref name="attlist.separator"/>
       <empty/>
     </element>
   </define>
   <define name="attlist.separator" combine="interleave">
     <optional>
-      <attribute name="string" a:defaultValue=""/>
+      <attribute a:defaultValue="">
+        <name ns="">string</name>
+        <text/>
+      </attribute>
     </optional>
   </define>
   <define name="attlist.separator" combine="interleave">
     <choice>
-      <attribute name="name"/>
-      <attribute name="name"/>
+      <attribute>
+        <name ns="">name</name>
+        <text/>
+      </attribute>
+      <attribute>
+        <name ns="">name</name>
+        <text/>
+      </attribute>
     </choice>
   </define>
   <define name="attlist.separator" combine="interleave">
     <optional>
-      <attribute name="states"/>
+      <attribute>
+        <name ns="">states</name>
+        <text/>
+      </attribute>
     </optional>
   </define>
   <define name="attlist.separator" combine="interleave">
     <optional>
-      <attribute name="xalign" a:defaultValue="0.0"/>
+      <attribute a:defaultValue="0.0">
+        <name ns="">xalign</name>
+        <text/>
+      </attribute>
     </optional>
   </define>
   <define name="attlist.separator" combine="interleave">
     <optional>
-      <attribute name="colspan" a:defaultValue="1"/>
+      <attribute a:defaultValue="1">
+        <name ns="">colspan</name>
+        <text/>
+      </attribute>
     </optional>
   </define>
   <define name="attlist.separator" combine="interleave">
     <optional>
-      <attribute name="yexpand" a:defaultValue="0">
+      <attribute a:defaultValue="0">
+        <name ns="">yexpand</name>
         <choice>
           <value>0</value>
           <value>1</value>
@@ -131,7 +173,8 @@
   </define>
   <define name="attlist.separator" combine="interleave">
     <optional>
-      <attribute name="yfill" a:defaultValue="0">
+      <attribute a:defaultValue="0">
+        <name ns="">yfill</name>
         <choice>
           <value>0</value>
           <value>1</value>
@@ -141,7 +184,8 @@
   </define>
   <define name="attlist.separator" combine="interleave">
     <optional>
-      <attribute name="xexpand" a:defaultValue="0">
+      <attribute a:defaultValue="0">
+        <name ns="">xexpand</name>
         <choice>
           <value>0</value>
           <value>1</value>
@@ -151,7 +195,8 @@
   </define>
   <define name="attlist.separator" combine="interleave">
     <optional>
-      <attribute name="xfill" a:defaultValue="0">
+      <attribute a:defaultValue="0">
+        <name ns="">xfill</name>
         <choice>
           <value>0</value>
           <value>1</value>
@@ -161,44 +206,67 @@
   </define>
   <define name="attlist.separator" combine="interleave">
     <optional>
-      <attribute name="help"/>
+      <attribute>
+        <name ns="">help</name>
+        <text/>
+      </attribute>
     </optional>
   </define>
   <define name="label">
-    <element name="label">
+    <element>
+      <name ns="">label</name>
       <ref name="attlist.label"/>
       <empty/>
     </element>
   </define>
   <define name="attlist.label" combine="interleave">
     <optional>
-      <attribute name="string" a:defaultValue=""/>
+      <attribute a:defaultValue="">
+        <name ns="">string</name>
+        <text/>
+      </attribute>
     </optional>
   </define>
   <define name="attlist.label" combine="interleave">
     <choice>
-      <attribute name="name"/>
-      <attribute name="name"/>
+      <attribute>
+        <name ns="">name</name>
+        <text/>
+      </attribute>
+      <attribute>
+        <name ns="">name</name>
+        <text/>
+      </attribute>
     </choice>
   </define>
   <define name="attlist.label" combine="interleave">
     <optional>
-      <attribute name="states"/>
+      <attribute>
+        <name ns="">states</name>
+        <text/>
+      </attribute>
     </optional>
   </define>
   <define name="attlist.label" combine="interleave">
     <optional>
-      <attribute name="xalign" a:defaultValue="0.0"/>
+      <attribute a:defaultValue="0.0">
+        <name ns="">xalign</name>
+        <text/>
+      </attribute>
     </optional>
   </define>
   <define name="attlist.label" combine="interleave">
     <optional>
-      <attribute name="yalign" a:defaultValue="0.5"/>
+      <attribute a:defaultValue="0.5">
+        <name ns="">yalign</name>
+        <text/>
+      </attribute>
     </optional>
   </define>
   <define name="attlist.label" combine="interleave">
     <optional>
-      <attribute name="yexpand" a:defaultValue="0">
+      <attribute a:defaultValue="0">
+        <name ns="">yexpand</name>
         <choice>
           <value>0</value>
           <value>1</value>
@@ -208,7 +276,8 @@
   </define>
   <define name="attlist.label" combine="interleave">
     <optional>
-      <attribute name="yfill" a:defaultValue="0">
+      <attribute a:defaultValue="0">
+        <name ns="">yfill</name>
         <choice>
           <value>0</value>
           <value>1</value>
@@ -218,7 +287,8 @@
   </define>
   <define name="attlist.label" combine="interleave">
     <optional>
-      <attribute name="xexpand" a:defaultValue="0">
+      <attribute a:defaultValue="0">
+        <name ns="">xexpand</name>
         <choice>
           <value>0</value>
           <value>1</value>
@@ -228,7 +298,8 @@
   </define>
   <define name="attlist.label" combine="interleave">
     <optional>
-      <attribute name="xfill" a:defaultValue="1">
+      <attribute a:defaultValue="1">
+        <name ns="">xfill</name>
         <choice>
           <value>0</value>
           <value>1</value>
@@ -238,25 +309,36 @@
   </define>
   <define name="attlist.label" combine="interleave">
     <optional>
-      <attribute name="colspan" a:defaultValue="1"/>
+      <attribute a:defaultValue="1">
+        <name ns="">colspan</name>
+        <text/>
+      </attribute>
     </optional>
   </define>
   <define name="attlist.label" combine="interleave">
     <optional>
-      <attribute name="help"/>
+      <attribute>
+        <name ns="">help</name>
+        <text/>
+      </attribute>
     </optional>
   </define>
   <define name="newline">
-    <element name="newline">
+    <element>
+      <name ns="">newline</name>
       <ref name="attlist.newline"/>
       <empty/>
     </element>
   </define>
   <define name="attlist.newline" combine="interleave">
-    <attribute name="id"/>
+    <attribute>
+      <name ns="">id</name>
+      <text/>
+    </attribute>
   </define>
   <define name="notebook">
-    <element name="notebook">
+    <element>
+      <name ns="">notebook</name>
       <ref name="attlist.notebook"/>
       <zeroOrMore>
         <ref name="page"/>
@@ -265,11 +347,15 @@
   </define>
   <define name="attlist.notebook" combine="interleave">
     <optional>
-      <attribute name="colspan" a:defaultValue="4"/>
+      <attribute a:defaultValue="4">
+        <name ns="">colspan</name>
+        <text/>
+      </attribute>
     </optional>
   </define>
   <define name="page">
-    <element name="page">
+    <element>
+      <name ns="">page</name>
       <ref name="attlist.page"/>
       <zeroOrMore>
         <choice>
@@ -288,27 +374,43 @@
   </define>
   <define name="attlist.page" combine="interleave">
     <optional>
-      <attribute name="angle"/>
+      <attribute>
+        <name ns="">angle</name>
+        <text/>
+      </attribute>
     </optional>
   </define>
   <define name="attlist.page" combine="interleave">
     <optional>
-      <attribute name="string" a:defaultValue="Unknown"/>
+      <attribute a:defaultValue="Unknown">
+        <name ns="">string</name>
+        <text/>
+      </attribute>
     </optional>
   </define>
   <define name="attlist.page" combine="interleave">
     <optional>
-      <attribute name="col" a:defaultValue="4"/>
+      <attribute a:defaultValue="4">
+        <name ns="">col</name>
+        <text/>
+      </attribute>
     </optional>
   </define>
   <define name="attlist.page" combine="interleave">
     <choice>
-      <attribute name="name"/>
-      <attribute name="id"/>
+      <attribute>
+        <name ns="">name</name>
+        <text/>
+      </attribute>
+      <attribute>
+        <name ns="">id</name>
+        <text/>
+      </attribute>
     </choice>
   </define>
   <define name="group">
-    <element name="group">
+    <element>
+      <name ns="">group</name>
       <ref name="attlist.group"/>
       <zeroOrMore>
         <choice>
@@ -327,17 +429,24 @@
   </define>
   <define name="attlist.group" combine="interleave">
     <optional>
-      <attribute name="string"/>
+      <attribute>
+        <name ns="">string</name>
+        <text/>
+      </attribute>
     </optional>
   </define>
   <define name="attlist.group" combine="interleave">
     <optional>
-      <attribute name="colspan" a:defaultValue="1"/>
+      <attribute a:defaultValue="1">
+        <name ns="">colspan</name>
+        <text/>
+      </attribute>
     </optional>
   </define>
   <define name="attlist.group" combine="interleave">
     <optional>
-      <attribute name="yexpand" a:defaultValue="0">
+      <attribute a:defaultValue="0">
+        <name ns="">yexpand</name>
         <choice>
           <value>0</value>
           <value>1</value>
@@ -347,7 +456,8 @@
   </define>
   <define name="attlist.group" combine="interleave">
     <optional>
-      <attribute name="yfill" a:defaultValue="1">
+      <attribute a:defaultValue="1">
+        <name ns="">yfill</name>
         <choice>
           <value>0</value>
           <value>1</value>
@@ -357,7 +467,19 @@
   </define>
   <define name="attlist.group" combine="interleave">
     <optional>
-      <attribute name="xexpand" a:defaultValue="0">
+      <attribute a:defaultValue="0">
+        <name ns="">xexpand</name>
+        <choice>
+          <value>0</value>
+          <value>1</value>
+        </choice>
+      </attribute>
+    </optional>
+  </define>
+  <define name="attlist.group" combine="interleave">
+    <optional>
+      <attribute a:defaultValue="1">
+        <name ns="">xfill</name>
         <choice>
           <value>0</value>
           <value>1</value>
@@ -367,29 +489,29 @@
   </define>
   <define name="attlist.group" combine="interleave">
     <optional>
-      <attribute name="xfill" a:defaultValue="1">
-        <choice>
-          <value>0</value>
-          <value>1</value>
-        </choice>
+      <attribute a:defaultValue="1">
+        <name ns="">rowspan</name>
+        <text/>
       </attribute>
     </optional>
   </define>
   <define name="attlist.group" combine="interleave">
     <optional>
-      <attribute name="rowspan" a:defaultValue="1"/>
+      <attribute a:defaultValue="4">
+        <name ns="">col</name>
+        <text/>
+      </attribute>
     </optional>
   </define>
   <define name="attlist.group" combine="interleave">
-    <optional>
-      <attribute name="col" a:defaultValue="4"/>
-    </optional>
-  </define>
-  <define name="attlist.group" combine="interleave">
-    <attribute name="id"/>
+    <attribute>
+      <name ns="">id</name>
+      <text/>
+    </attribute>
   </define>
   <define name="hpaned">
-    <element name="hpaned">
+    <element>
+      <name ns="">hpaned</name>
       <ref name="attlist.paned"/>
       <zeroOrMore>
         <ref name="child"/>
@@ -397,7 +519,8 @@
     </element>
   </define>
   <define name="vpaned">
-    <element name="vpaned">
+    <element>
+      <name ns="">vpaned</name>
       <ref name="attlist.paned"/>
       <zeroOrMore>
         <ref name="child"/>
@@ -406,19 +529,29 @@
   </define>
   <define name="attlist.paned" combine="interleave">
     <optional>
-      <attribute name="colspan" a:defaultValue="4"/>
+      <attribute a:defaultValue="4">
+        <name ns="">colspan</name>
+        <text/>
+      </attribute>
     </optional>
   </define>
   <define name="attlist.paned" combine="interleave">
     <optional>
-      <attribute name="position"/>
+      <attribute>
+        <name ns="">position</name>
+        <text/>
+      </attribute>
     </optional>
   </define>
   <define name="attlist.paned" combine="interleave">
-    <attribute name="id"/>
+    <attribute>
+      <name ns="">id</name>
+      <text/>
+    </attribute>
   </define>
   <define name="child">
-    <element name="child">
+    <element>
+      <name ns="">child</name>
       <ref name="attlist.child"/>
       <zeroOrMore>
         <choice>
@@ -436,10 +569,14 @@
     </element>
   </define>
   <define name="attlist.child" combine="interleave">
-    <attribute name="id"/>
+    <attribute>
+      <name ns="">id</name>
+      <text/>
+    </attribute>
   </define>
   <define name="data">
-    <element name="data">
+    <element>
+      <name ns="">data</name>
       <ref name="attlist.data"/>
       <oneOrMore>
         <ref name="xpath"/>
@@ -450,7 +587,8 @@
     <empty/>
   </define>
   <define name="xpath">
-    <element name="xpath">
+    <element>
+      <name ns="">xpath</name>
       <ref name="attlist.xpath"/>
       <zeroOrMore>
         <choice>
@@ -471,11 +609,15 @@
     </element>
   </define>
   <define name="attlist.xpath" combine="interleave">
-    <attribute name="expr"/>
+    <attribute>
+      <name ns="">expr</name>
+      <text/>
+    </attribute>
   </define>
   <define name="attlist.xpath" combine="interleave">
     <optional>
-      <attribute name="position" a:defaultValue="inside">
+      <attribute a:defaultValue="inside">
+        <name ns="">position</name>
         <choice>
           <value>inside</value>
           <value>replace</value>
@@ -487,17 +629,24 @@
     </optional>
   </define>
   <define name="action">
-    <element name="action">
+    <element>
+      <name ns="">action</name>
       <ref name="attlist.action"/>
       <empty/>
     </element>
   </define>
   <define name="attlist.action" combine="interleave">
-    <attribute name="name"/>
+    <attribute>
+      <name ns="">name</name>
+      <text/>
+    </attribute>
   </define>
   <define name="attlist.action" combine="interleave">
     <optional>
-      <attribute name="colspan" a:defaultValue="1"/>
+      <attribute a:defaultValue="1">
+        <name ns="">colspan</name>
+        <text/>
+      </attribute>
     </optional>
   </define>
   <define name="label" combine="choice">
diff -r 9c2b17ecf341 -r 21c4acd056a7 trytond/ir/ui/calendar.rng
--- a/trytond/ir/ui/calendar.rng        Mon Feb 04 22:23:12 2019 +0100
+++ b/trytond/ir/ui/calendar.rng        Mon Feb 04 22:46:32 2019 +0100
@@ -1,7 +1,9 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<grammar xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"; 
xmlns="http://relaxng.org/ns/structure/1.0";>
+<grammar xmlns="http://relaxng.org/ns/structure/1.0";
+         xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0";>
   <define name="calendar">
-    <element name="calendar">
+    <element>
+      <name ns="">calendar</name>
       <ref name="attlist.calendar"/>
       <zeroOrMore>
         <ref name="field"/>
@@ -9,16 +11,23 @@
     </element>
   </define>
   <define name="attlist.calendar" combine="interleave">
-    <attribute name="dtstart"/>
+    <attribute>
+      <name ns="">dtstart</name>
+      <text/>
+    </attribute>
   </define>
   <define name="attlist.calendar" combine="interleave">
     <optional>
-      <attribute name="dtend"/>
+      <attribute>
+        <name ns="">dtend</name>
+        <text/>
+      </attribute>
     </optional>
   </define>
   <define name="attlist.calendar" combine="interleave">
     <optional>
-      <attribute name="mode">
+      <attribute>
+        <name ns="">mode</name>
         <choice>
           <value>week</value>
           <value>month</value>
@@ -28,25 +37,36 @@
   </define>
   <define name="attlist.calendar" combine="interleave">
     <optional>
-      <attribute name="color" a:defaultValue="black"/>
+      <attribute a:defaultValue="black">
+        <name ns="">color</name>
+        <text/>
+      </attribute>
     </optional>
   </define>
   <define name="attlist.calendar" combine="interleave">
     <optional>
-      <attribute name="background_color" a:defaultValue="lightblue"/>
+      <attribute a:defaultValue="lightblue">
+        <name ns="">background_color</name>
+        <text/>
+      </attribute>
     </optional>
   </define>
   <define name="field">
-    <element name="field">
+    <element>
+      <name ns="">field</name>
       <ref name="attlist.field"/>
       <empty/>
     </element>
   </define>
   <define name="attlist.field" combine="interleave">
-    <attribute name="name"/>
+    <attribute>
+      <name ns="">name</name>
+      <text/>
+    </attribute>
   </define>
   <define name="data">
-    <element name="data">
+    <element>
+      <name ns="">data</name>
       <ref name="attlist.data"/>
       <zeroOrMore>
         <ref name="xpath"/>
@@ -57,7 +77,8 @@
     <empty/>
   </define>
   <define name="xpath">
-    <element name="xpath">
+    <element>
+      <name ns="">xpath</name>
       <ref name="attlist.xpath"/>
       <zeroOrMore>
         <choice>
@@ -68,11 +89,15 @@
     </element>
   </define>
   <define name="attlist.xpath" combine="interleave">
-    <attribute name="expr"/>
+    <attribute>
+      <name ns="">expr</name>
+      <text/>
+    </attribute>
   </define>
   <define name="attlist.xpath" combine="interleave">
     <optional>
-      <attribute name="position" a:defaultValue="inside">
+      <attribute a:defaultValue="inside">
+        <name ns="">position</name>
         <choice>
           <value>inside</value>
           <value>replace</value>
diff -r 9c2b17ecf341 -r 21c4acd056a7 trytond/ir/ui/form.rng
--- a/trytond/ir/ui/form.rng    Mon Feb 04 22:23:12 2019 +0100
+++ b/trytond/ir/ui/form.rng    Mon Feb 04 22:46:32 2019 +0100
@@ -1,7 +1,9 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<grammar xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"; 
xmlns="http://relaxng.org/ns/structure/1.0";>
+<grammar xmlns="http://relaxng.org/ns/structure/1.0";
+         xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0";>
   <define name="form">
-    <element name="form">
+    <element>
+      <name ns="">form</name>
       <ref name="attlist.form"/>
       <zeroOrMore>
         <choice>
@@ -21,54 +23,83 @@
   </define>
   <define name="attlist.form" combine="interleave">
     <optional>
-      <attribute name="on_write"/>
+      <attribute>
+        <name ns="">on_write</name>
+        <text/>
+      </attribute>
     </optional>
   </define>
   <define name="attlist.form" combine="interleave">
     <optional>
-      <attribute name="col" a:defaultValue="4"/>
+      <attribute a:defaultValue="4">
+        <name ns="">col</name>
+        <text/>
+      </attribute>
     </optional>
   </define>
   <define name="attlist.form" combine="interleave">
     <optional>
-      <attribute name="cursor"/>
+      <attribute>
+        <name ns="">cursor</name>
+        <text/>
+      </attribute>
     </optional>
   </define>
   <define name="label">
-    <element name="label">
+    <element>
+      <name ns="">label</name>
       <ref name="attlist.label"/>
       <empty/>
     </element>
   </define>
   <define name="attlist.label" combine="interleave">
     <optional>
-      <attribute name="string" a:defaultValue=""/>
+      <attribute a:defaultValue="">
+        <name ns="">string</name>
+        <text/>
+      </attribute>
     </optional>
   </define>
   <define name="attlist.label" combine="interleave">
     <choice>
-      <attribute name="name"/>
-      <attribute name="id"/>
+      <attribute>
+        <name ns="">name</name>
+        <text/>
+      </attribute>
+      <attribute>
+        <name ns="">id</name>
+        <text/>
+      </attribute>
     </choice>
   </define>
   <define name="attlist.label" combine="interleave">
     <optional>
-      <attribute name="states"/>
+      <attribute>
+        <name ns="">states</name>
+        <text/>
+      </attribute>
     </optional>
   </define>
   <define name="attlist.label" combine="interleave">
     <optional>
-      <attribute name="xalign" a:defaultValue="0.0"/>
+      <attribute a:defaultValue="0.0">
+        <name ns="">xalign</name>
+        <text/>
+      </attribute>
     </optional>
   </define>
   <define name="attlist.label" combine="interleave">
     <optional>
-      <attribute name="yalign" a:defaultValue="0.5"/>
+      <attribute a:defaultValue="0.5">
+        <name ns="">yalign</name>
+        <text/>
+      </attribute>
     </optional>
   </define>
   <define name="attlist.label" combine="interleave">
     <optional>
-      <attribute name="yexpand" a:defaultValue="0">
+      <attribute a:defaultValue="0">
+        <name ns="">yexpand</name>
         <choice>
           <value>0</value>
           <value>1</value>
@@ -78,7 +109,8 @@
   </define>
   <define name="attlist.label" combine="interleave">
     <optional>
-      <attribute name="yfill" a:defaultValue="0">
+      <attribute a:defaultValue="0">
+        <name ns="">yfill</name>
         <choice>
           <value>0</value>
           <value>1</value>
@@ -88,7 +120,19 @@
   </define>
   <define name="attlist.label" combine="interleave">
     <optional>
-      <attribute name="xexpand" a:defaultValue="0">
+      <attribute a:defaultValue="0">
+        <name ns="">xexpand</name>
+        <choice>
+          <value>0</value>
+          <value>1</value>
+        </choice>
+      </attribute>
+    </optional>
+  </define>
+  <define name="attlist.label" combine="interleave">
+    <optional>
+      <attribute a:defaultValue="1">
+        <name ns="">xfill</name>
         <choice>
           <value>0</value>
           <value>1</value>
@@ -98,41 +142,45 @@
   </define>
   <define name="attlist.label" combine="interleave">
     <optional>
-      <attribute name="xfill" a:defaultValue="1">
-        <choice>
-          <value>0</value>
-          <value>1</value>
-        </choice>
+      <attribute a:defaultValue="1">
+        <name ns="">colspan</name>
+        <text/>
       </attribute>
     </optional>
   </define>
   <define name="attlist.label" combine="interleave">
     <optional>
-      <attribute name="colspan" a:defaultValue="1"/>
-    </optional>
-  </define>
-  <define name="attlist.label" combine="interleave">
-    <optional>
-      <attribute name="help"/>
+      <attribute>
+        <name ns="">help</name>
+        <text/>
+      </attribute>
     </optional>
   </define>
   <define name="field">
-    <element name="field">
+    <element>
+      <name ns="">field</name>
       <ref name="attlist.field"/>
       <empty/>
     </element>
   </define>
   <define name="attlist.field" combine="interleave">
-    <attribute name="name"/>
+    <attribute>
+      <name ns="">name</name>
+      <text/>
+    </attribute>
   </define>
   <define name="attlist.field" combine="interleave">
     <optional>
-      <attribute name="colspan" a:defaultValue="1"/>
+      <attribute a:defaultValue="1">
+        <name ns="">colspan</name>
+        <text/>
+      </attribute>
     </optional>
   </define>
   <define name="attlist.field" combine="interleave">
     <optional>
-      <attribute name="widget">
+      <attribute>
+        <name ns="">widget</name>
         <choice>
           <value>date</value>
           <value>datetime</value>
@@ -168,7 +216,8 @@
   </define>
   <define name="attlist.field" combine="interleave">
     <optional>
-      <attribute name="fill">
+      <attribute>
+        <name ns="">fill</name>
         <choice>
           <value>0</value>
           <value>1</value>
@@ -178,7 +227,8 @@
   </define>
   <define name="attlist.field" combine="interleave">
     <optional>
-      <attribute name="yexpand">
+      <attribute>
+        <name ns="">yexpand</name>
         <choice>
           <value>0</value>
           <value>1</value>
@@ -188,7 +238,8 @@
   </define>
   <define name="attlist.field" combine="interleave">
     <optional>
-      <attribute name="yfill">
+      <attribute>
+        <name ns="">yfill</name>
         <choice>
           <value>0</value>
           <value>1</value>
@@ -198,7 +249,8 @@
   </define>
   <define name="attlist.field" combine="interleave">
     <optional>
-      <attribute name="empty">
+      <attribute>
+        <name ns="">empty</name>
         <choice>
           <value>0</value>
           <value>1</value>
@@ -208,7 +260,8 @@
   </define>
   <define name="attlist.field" combine="interleave">
     <optional>
-      <attribute name="xexpand" a:defaultValue="1">
+      <attribute a:defaultValue="1">
+        <name ns="">xexpand</name>
         <choice>
           <value>0</value>
           <value>1</value>
@@ -218,7 +271,8 @@
   </define>
   <define name="attlist.field" combine="interleave">
     <optional>
-      <attribute name="xfill" a:defaultValue="1">
+      <attribute a:defaultValue="1">
+        <name ns="">xfill</name>
         <choice>
           <value>0</value>
           <value>1</value>
@@ -228,32 +282,48 @@
   </define>
   <define name="attlist.field" combine="interleave">
     <optional>
-      <attribute name="xalign" a:defaultValue="0.0"/>
+      <attribute a:defaultValue="0.0">
+        <name ns="">xalign</name>
+        <text/>
+      </attribute>
     </optional>
   </define>
   <define name="attlist.field" combine="interleave">
     <optional>
-      <attribute name="yalign" a:defaultValue="0.5"/>
+      <attribute a:defaultValue="0.5">
+        <name ns="">yalign</name>
+        <text/>
+      </attribute>
     </optional>
   </define>
   <define name="attlist.field" combine="interleave">
     <optional>
-      <attribute name="help"/>
+      <attribute>
+        <name ns="">help</name>
+        <text/>
+      </attribute>
     </optional>
   </define>
   <define name="attlist.field" combine="interleave">
     <optional>
-      <attribute name="width"/>
+      <attribute>
+        <name ns="">width</name>
+        <text/>
+      </attribute>
     </optional>
   </define>
   <define name="attlist.field" combine="interleave">
     <optional>
-      <attribute name="height"/>
+      <attribute>
+        <name ns="">height</name>
+        <text/>
+      </attribute>
     </optional>
   </define>
   <define name="attlist.field" combine="interleave">
     <optional>
-      <attribute name="readonly">
+      <attribute>
+        <name ns="">readonly</name>
         <choice>
           <value>0</value>
           <value>1</value>
@@ -263,7 +333,8 @@
   </define>
   <define name="attlist.field" combine="interleave">
     <optional>
-      <attribute name="tree_invisible" a:defaultValue="0">
+      <attribute a:defaultValue="0">
+        <name ns="">tree_invisible</name>
         <choice>
           <value>0</value>
           <value>1</value>
@@ -273,22 +344,32 @@
   </define>
   <define name="attlist.field" combine="interleave">
     <optional>
-      <attribute name="mode"/>
+      <attribute>
+        <name ns="">mode</name>
+        <text/>
+      </attribute>
     </optional>
   </define>
   <define name="attlist.field" combine="interleave">
     <optional>
-      <attribute name="view_ids"/>
+      <attribute>
+        <name ns="">view_ids</name>
+        <text/>
+      </attribute>
     </optional>
   </define>
   <define name="attlist.field" combine="interleave">
     <optional>
-      <attribute name="product"/>
+      <attribute>
+        <name ns="">product</name>
+        <text/>
+      </attribute>
     </optional>
   </define>
   <define name="attlist.field" combine="interleave">
     <optional>
-      <attribute name="invisible" a:defaultValue="0">
+      <attribute a:defaultValue="0">
+        <name ns="">invisible</name>
         <choice>
           <value>0</value>
           <value>1</value>
@@ -298,7 +379,8 @@
   </define>
   <define name="attlist.field" combine="interleave">
     <optional>
-      <attribute name="orientation" a:defaultValue="left_to_right">
+      <attribute a:defaultValue="left_to_right">
+        <name ns="">orientation</name>
         <choice>
           <value>left_to_right</value>
           <value>right_to_left</value>
@@ -310,12 +392,16 @@
   </define>
   <define name="attlist.field" combine="interleave">
     <optional>
-      <attribute name="spell"/>
+      <attribute>
+        <name ns="">spell</name>
+        <text/>
+      </attribute>
     </optional>
   </define>
   <define name="attlist.field" combine="interleave">
     <optional>
-      <attribute name="filename_visible" a:defaultValue="0">
+      <attribute a:defaultValue="0">
+        <name ns="">filename_visible</name>
         <choice>
           <value>0</value>
           <value>1</value>
@@ -325,7 +411,8 @@
   </define>
   <define name="attlist.field" combine="interleave">
     <optional>
-      <attribute name="pre_validate" a:defaultValue="0">
+      <attribute a:defaultValue="0">
+        <name ns="">pre_validate</name>
         <choice>
           <value>0</value>
           <value>1</value>
@@ -335,12 +422,16 @@
   </define>
   <define name="attlist.field" combine="interleave">
     <optional>
-      <attribute name="icon"/>
+      <attribute>
+        <name ns="">icon</name>
+        <text/>
+      </attribute>
     </optional>
   </define>
   <define name="attlist.field" combine="interleave">
     <optional>
-      <attribute name="completion" a:defaultValue="1">
+      <attribute a:defaultValue="1">
+        <name ns="">completion</name>
         <choice>
           <value>0</value>
           <value>1</value>
@@ -350,22 +441,32 @@
   </define>
   <define name="attlist.field" combine="interleave">
     <optional>
-      <attribute name="string"/>
+      <attribute>
+        <name ns="">string</name>
+        <text/>
+      </attribute>
     </optional>
   </define>
   <define name="attlist.field" combine="interleave">
     <optional>
-      <attribute name="factor" a:defaultValue="1"/>
+      <attribute a:defaultValue="1">
+        <name ns="">factor</name>
+        <text/>
+      </attribute>
     </optional>
   </define>
   <define name="attlist.field" combine="interleave">
     <optional>
-      <attribute name="filename"/>
+      <attribute>
+        <name ns="">filename</name>
+        <text/>
+      </attribute>
     </optional>
   </define>
   <define name="attlist.field" combine="interleave">
     <optional>
-      <attribute name="toolbar" a:defaultValue="0">
+      <attribute a:defaultValue="0">
+        <name ns="">toolbar</name>
         <choice>
           <value>0</value>
           <value>1</value>
@@ -374,22 +475,30 @@
     </optional>
   </define>
   <define name="image">
-    <element name="image">
+    <element>
+      <name ns="">image</name>
       <ref name="attlist.image"/>
       <empty/>
     </element>
   </define>
   <define name="attlist.image" combine="interleave">
-    <attribute name="name"/>
+    <attribute>
+      <name ns="">name</name>
+      <text/>
+    </attribute>
   </define>
   <define name="attlist.image" combine="interleave">
     <optional>
-      <attribute name="colspan" a:defaultValue="1"/>
+      <attribute a:defaultValue="1">
+        <name ns="">colspan</name>
+        <text/>
+      </attribute>
     </optional>
   </define>
   <define name="attlist.image" combine="interleave">
     <optional>
-      <attribute name="yexpand" a:defaultValue="0">
+      <attribute a:defaultValue="0">
+        <name ns="">yexpand</name>
         <choice>
           <value>0</value>
           <value>1</value>
@@ -399,7 +508,8 @@
   </define>
   <define name="attlist.image" combine="interleave">
     <optional>
-      <attribute name="yfill" a:defaultValue="0">
+      <attribute a:defaultValue="0">
+        <name ns="">yfill</name>
         <choice>
           <value>0</value>
           <value>1</value>
@@ -409,7 +519,8 @@
   </define>
   <define name="attlist.image" combine="interleave">
     <optional>
-      <attribute name="xexpand" a:defaultValue="0">
+      <attribute a:defaultValue="0">
+        <name ns="">xexpand</name>
         <choice>
           <value>0</value>
           <value>1</value>
@@ -419,7 +530,8 @@
   </define>
   <define name="attlist.image" combine="interleave">
     <optional>
-      <attribute name="xfill" a:defaultValue="0">
+      <attribute a:defaultValue="0">
+        <name ns="">xfill</name>
         <choice>
           <value>0</value>
           <value>1</value>
@@ -429,49 +541,75 @@
   </define>
   <define name="attlist.image" combine="interleave">
     <optional>
-      <attribute name="help"/>
+      <attribute>
+        <name ns="">help</name>
+        <text/>
+      </attribute>
     </optional>
   </define>
   <define name="attlist.image" combine="interleave">
     <optional>
-      <attribute name="states"/>
+      <attribute>
+        <name ns="">states</name>
+        <text/>
+      </attribute>
     </optional>
   </define>
   <define name="separator">
-    <element name="separator">
+    <element>
+      <name ns="">separator</name>
       <ref name="attlist.separator"/>
       <empty/>
     </element>
   </define>
   <define name="attlist.separator" combine="interleave">
     <optional>
-      <attribute name="string" a:defaultValue=""/>
+      <attribute a:defaultValue="">
+        <name ns="">string</name>
+        <text/>
+      </attribute>
     </optional>
   </define>
   <define name="attlist.separator" combine="interleave">
     <choice>
-      <attribute name="name"/>
-      <attribute name="id"/>
+      <attribute>
+        <name ns="">name</name>
+        <text/>
+      </attribute>
+      <attribute>
+        <name ns="">id</name>
+        <text/>
+      </attribute>
     </choice>
   </define>
   <define name="attlist.separator" combine="interleave">
     <optional>
-      <attribute name="states"/>
+      <attribute>
+        <name ns="">states</name>
+        <text/>
+      </attribute>
     </optional>
   </define>
   <define name="attlist.separator" combine="interleave">
     <optional>
-      <attribute name="xalign" a:defaultValue="0.0"/>
+      <attribute a:defaultValue="0.0">
+        <name ns="">xalign</name>
+        <text/>
+      </attribute>
     </optional>
   </define>
   <define name="attlist.separator" combine="interleave">
     <optional>
-      <attribute name="colspan" a:defaultValue="1"/>
+      <attribute a:defaultValue="1">
+        <name ns="">colspan</name>
+        <text/>
+      </attribute>
     </optional>
   </define>
   <define name="attlist.separator" combine="interleave">
     <optional>
-      <attribute name="yexpand" a:defaultValue="0">
+      <attribute a:defaultValue="0">
+        <name ns="">yexpand</name>
         <choice>
           <value>0</value>
           <value>1</value>
@@ -481,7 +619,8 @@
   </define>
   <define name="attlist.separator" combine="interleave">
     <optional>
-      <attribute name="yfill" a:defaultValue="0">
+      <attribute a:defaultValue="0">
+        <name ns="">yfill</name>
         <choice>
           <value>0</value>
           <value>1</value>
@@ -491,7 +630,8 @@
   </define>
   <define name="attlist.separator" combine="interleave">
     <optional>
-      <attribute name="xexpand" a:defaultValue="0">
+      <attribute a:defaultValue="0">
+        <name ns="">xexpand</name>
         <choice>
           <value>0</value>
           <value>1</value>
@@ -501,7 +641,8 @@
   </define>
   <define name="attlist.separator" combine="interleave">
     <optional>
-      <attribute name="xfill" a:defaultValue="0">
+      <attribute a:defaultValue="0">
+        <name ns="">xfill</name>
         <choice>
           <value>0</value>
           <value>1</value>
@@ -511,11 +652,15 @@
   </define>
   <define name="attlist.separator" combine="interleave">
     <optional>
-      <attribute name="help"/>
+      <attribute>
+        <name ns="">help</name>
+        <text/>
+      </attribute>
     </optional>
   </define>
   <define name="newline">
-    <element name="newline">
+    <element>
+      <name ns="">newline</name>
       <ref name="attlist.newline"/>
       <empty/>
     </element>
@@ -524,47 +669,70 @@
     <empty/>
   </define>
   <define name="button">
-    <element name="button">
+    <element>
+      <name ns="">button</name>
       <ref name="attlist.button"/>
       <empty/>
     </element>
   </define>
   <define name="attlist.button" combine="interleave">
     <optional>
-      <attribute name="colspan" a:defaultValue="1"/>
+      <attribute a:defaultValue="1">
+        <name ns="">colspan</name>
+        <text/>
+      </attribute>
     </optional>
   </define>
   <define name="attlist.button" combine="interleave">
     <optional>
-      <attribute name="help"/>
+      <attribute>
+        <name ns="">help</name>
+        <text/>
+      </attribute>
     </optional>
   </define>
   <define name="attlist.button" combine="interleave">
     <optional>
-      <attribute name="string"/>
+      <attribute>
+        <name ns="">string</name>
+        <text/>
+      </attribute>
     </optional>
   </define>
   <define name="attlist.button" combine="interleave">
     <optional>
-      <attribute name="icon"/>
+      <attribute>
+        <name ns="">icon</name>
+        <text/>
+      </attribute>
     </optional>
   </define>
   <define name="attlist.button" combine="interleave">
     <optional>
-      <attribute name="confirm"/>
+      <attribute>
+        <name ns="">confirm</name>
+        <text/>
+      </attribute>
     </optional>
   </define>
   <define name="attlist.button" combine="interleave">
-    <attribute name="name"/>
+    <attribute>
+      <name ns="">name</name>
+      <text/>
+    </attribute>
   </define>
   <define name="attlist.button" combine="interleave">
     <optional>
-      <attribute name="states"/>
+      <attribute>
+        <name ns="">states</name>
+        <text/>
+      </attribute>
     </optional>
   </define>
   <define name="attlist.button" combine="interleave">
     <optional>
-      <attribute name="keyword" a:defaultValue="action">
+      <attribute a:defaultValue="action">
+        <name ns="">keyword</name>
         <choice>
           <value>relate</value>
           <value>print</value>
@@ -575,7 +743,8 @@
   </define>
   <define name="attlist.button" combine="interleave">
     <optional>
-      <attribute name="rule" a:defaultValue="0">
+      <attribute a:defaultValue="0">
+        <name ns="">rule</name>
         <choice>
           <value>0</value>
           <value>1</value>
@@ -585,12 +754,16 @@
   </define>
   <define name="attlist.button" combine="interleave">
     <optional>
-      <attribute name="change"/>
+      <attribute>
+        <name ns="">change</name>
+        <text/>
+      </attribute>
     </optional>
   </define>
   <define name="attlist.button" combine="interleave">
     <optional>
-      <attribute name="type">
+      <attribute>
+        <name ns="">type</name>
         <choice>
           <value>class</value>
           <value>instance</value>
@@ -599,7 +772,8 @@
     </optional>
   </define>
   <define name="notebook">
-    <element name="notebook">
+    <element>
+      <name ns="">notebook</name>
       <ref name="attlist.notebook"/>
       <zeroOrMore>
         <ref name="page"/>
@@ -608,26 +782,39 @@
   </define>
   <define name="attlist.notebook" combine="interleave">
     <optional>
-      <attribute name="colspan" a:defaultValue="4"/>
+      <attribute a:defaultValue="4">
+        <name ns="">colspan</name>
+        <text/>
+      </attribute>
     </optional>
   </define>
   <define name="attlist.notebook" combine="interleave">
     <optional>
-      <attribute name="states"/>
+      <attribute>
+        <name ns="">states</name>
+        <text/>
+      </attribute>
     </optional>
   </define>
   <define name="attlist.notebook" combine="interleave">
     <optional>
-      <attribute name="width"/>
+      <attribute>
+        <name ns="">width</name>
+        <text/>
+      </attribute>
     </optional>
   </define>
   <define name="attlist.notebook" combine="interleave">
     <optional>
-      <attribute name="height"/>
+      <attribute>
+        <name ns="">height</name>
+        <text/>
+      </attribute>
     </optional>
   </define>
   <define name="page">
-    <element name="page">
+    <element>
+      <name ns="">page</name>
       <ref name="attlist.page"/>
       <zeroOrMore>
         <choice>
@@ -647,37 +834,59 @@
   </define>
   <define name="attlist.page" combine="interleave">
     <optional>
-      <attribute name="angle"/>
+      <attribute>
+        <name ns="">angle</name>
+        <text/>
+      </attribute>
     </optional>
   </define>
   <define name="attlist.page" combine="interleave">
     <optional>
-      <attribute name="icon"/>
+      <attribute>
+        <name ns="">icon</name>
+        <text/>
+      </attribute>
     </optional>
   </define>
   <define name="attlist.page" combine="interleave">
     <optional>
-      <attribute name="string" a:defaultValue="Unknown"/>
+      <attribute a:defaultValue="Unknown">
+        <name ns="">string</name>
+        <text/>
+      </attribute>
     </optional>
   </define>
   <define name="attlist.page" combine="interleave">
     <optional>
-      <attribute name="col" a:defaultValue="4"/>
+      <attribute a:defaultValue="4">
+        <name ns="">col</name>
+        <text/>
+      </attribute>
     </optional>
   </define>
   <define name="attlist.page" combine="interleave">
     <choice>
-      <attribute name="name"/>
-      <attribute name="id"/>
+      <attribute>
+        <name ns="">name</name>
+        <text/>
+      </attribute>
+      <attribute>
+        <name ns="">id</name>
+        <text/>
+      </attribute>
     </choice>
   </define>
   <define name="attlist.page" combine="interleave">
     <optional>
-      <attribute name="states"/>
+      <attribute>
+        <name ns="">states</name>
+        <text/>
+      </attribute>
     </optional>
   </define>
   <define name="group">
-    <element name="group">
+    <element>
+      <name ns="">group</name>
       <ref name="attlist.group"/>
       <zeroOrMore>
         <choice>
@@ -697,17 +906,24 @@
   </define>
   <define name="attlist.group" combine="interleave">
     <optional>
-      <attribute name="string"/>
+      <attribute>
+        <name ns="">string</name>
+        <text/>
+      </attribute>
     </optional>
   </define>
   <define name="attlist.group" combine="interleave">
     <optional>
-      <attribute name="colspan" a:defaultValue="1"/>
+      <attribute a:defaultValue="1">
+        <name ns="">colspan</name>
+        <text/>
+      </attribute>
     </optional>
   </define>
   <define name="attlist.group" combine="interleave">
     <optional>
-      <attribute name="yexpand" a:defaultValue="0">
+      <attribute a:defaultValue="0">
+        <name ns="">yexpand</name>
         <choice>
           <value>0</value>
           <value>1</value>
@@ -717,7 +933,8 @@
   </define>
   <define name="attlist.group" combine="interleave">
     <optional>
-      <attribute name="yfill" a:defaultValue="1">
+      <attribute a:defaultValue="1">
+        <name ns="">yfill</name>
         <choice>
           <value>0</value>
           <value>1</value>
@@ -727,7 +944,8 @@
   </define>
   <define name="attlist.group" combine="interleave">
     <optional>
-      <attribute name="xexpand" a:defaultValue="0">
+      <attribute a:defaultValue="0">
+        <name ns="">xexpand</name>
         <choice>
           <value>0</value>
           <value>1</value>
@@ -737,7 +955,8 @@
   </define>
   <define name="attlist.group" combine="interleave">
     <optional>
-      <attribute name="xfill" a:defaultValue="1">
+      <attribute a:defaultValue="1">
+        <name ns="">xfill</name>
         <choice>
           <value>0</value>
           <value>1</value>
@@ -747,28 +966,44 @@
   </define>
   <define name="attlist.group" combine="interleave">
     <optional>
-      <attribute name="rowspan" a:defaultValue="1"/>
+      <attribute a:defaultValue="1">
+        <name ns="">rowspan</name>
+        <text/>
+      </attribute>
     </optional>
   </define>
   <define name="attlist.group" combine="interleave">
     <optional>
-      <attribute name="col" a:defaultValue="4"/>
+      <attribute a:defaultValue="4">
+        <name ns="">col</name>
+        <text/>
+      </attribute>
     </optional>
   </define>
   <define name="attlist.group" combine="interleave">
     <choice>
-      <attribute name="name"/>
-      <attribute name="id"/>
+      <attribute>
+        <name ns="">name</name>
+        <text/>
+      </attribute>
+      <attribute>
+        <name ns="">id</name>
+        <text/>
+      </attribute>
     </choice>
   </define>
   <define name="attlist.group" combine="interleave">
     <optional>
-      <attribute name="states"/>
+      <attribute>
+        <name ns="">states</name>
+        <text/>
+      </attribute>
     </optional>
   </define>
   <define name="attlist.group" combine="interleave">
     <optional>
-      <attribute name="homogeneous" a:defaultValue="0">
+      <attribute a:defaultValue="0">
+        <name ns="">homogeneous</name>
         <choice>
           <value>0</value>
           <value>1</value>
@@ -778,7 +1013,8 @@
   </define>
   <define name="attlist.group" combine="interleave">
     <optional>
-      <attribute name="expandable">
+      <attribute>
+        <name ns="">expandable</name>
         <choice>
           <value>0</value>
           <value>1</value>
@@ -787,7 +1023,8 @@
     </optional>
   </define>
   <define name="hpaned">
-    <element name="hpaned">
+    <element>
+      <name ns="">hpaned</name>
       <ref name="attlist.paned"/>
       <zeroOrMore>
         <ref name="child"/>
@@ -795,7 +1032,8 @@
     </element>
   </define>
   <define name="vpaned">
-    <element name="vpaned">
+    <element>
+      <name ns="">vpaned</name>
       <ref name="attlist.paned"/>
       <zeroOrMore>
         <ref name="child"/>
@@ -804,19 +1042,29 @@
   </define>
   <define name="attlist.paned" combine="interleave">
     <optional>
-      <attribute name="colspan" a:defaultValue="4"/>
+      <attribute a:defaultValue="4">
+        <name ns="">colspan</name>
+        <text/>
+      </attribute>
     </optional>
   </define>
   <define name="attlist.paned" combine="interleave">
     <optional>
-      <attribute name="position"/>
+      <attribute>
+        <name ns="">position</name>
+        <text/>
+      </attribute>
     </optional>
   </define>
   <define name="attlist.paned" combine="interleave">
-    <attribute name="id"/>
+    <attribute>
+      <name ns="">id</name>
+      <text/>
+    </attribute>
   </define>
   <define name="child">
-    <element name="child">
+    <element>
+      <name ns="">child</name>
       <ref name="attlist.child"/>
       <zeroOrMore>
         <choice>
@@ -835,10 +1083,14 @@
     </element>
   </define>
   <define name="attlist.child" combine="interleave">
-    <attribute name="id"/>
+    <attribute>
+      <name ns="">id</name>
+      <text/>
+    </attribute>
   </define>
   <define name="data">
-    <element name="data">
+    <element>
+      <name ns="">data</name>
       <ref name="attlist.data"/>
       <zeroOrMore>
         <ref name="xpath"/>
@@ -849,7 +1101,8 @@
     <empty/>
   </define>
   <define name="xpath">
-    <element name="xpath">
+    <element>
+      <name ns="">xpath</name>
       <ref name="attlist.xpath"/>
       <zeroOrMore>
         <choice>
@@ -871,11 +1124,15 @@
     </element>
   </define>
   <define name="attlist.xpath" combine="interleave">
-    <attribute name="expr"/>
+    <attribute>
+      <name ns="">expr</name>
+      <text/>
+    </attribute>
   </define>
   <define name="attlist.xpath" combine="interleave">
     <optional>
-      <attribute name="position" a:defaultValue="inside">
+      <attribute a:defaultValue="inside">
+        <name ns="">position</name>
         <choice>
           <value>inside</value>
           <value>replace</value>
diff -r 9c2b17ecf341 -r 21c4acd056a7 trytond/ir/ui/graph.rng
--- a/trytond/ir/ui/graph.rng   Mon Feb 04 22:23:12 2019 +0100
+++ b/trytond/ir/ui/graph.rng   Mon Feb 04 22:46:32 2019 +0100
@@ -1,7 +1,9 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<grammar xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"; 
xmlns="http://relaxng.org/ns/structure/1.0";>
+<grammar xmlns="http://relaxng.org/ns/structure/1.0";
+         xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0";>
   <define name="graph">
-    <element name="graph">
+    <element>
+      <name ns="">graph</name>
       <ref name="attlist.graph"/>
       <zeroOrMore>
         <ref name="x"/>
@@ -13,7 +15,8 @@
   </define>
   <define name="attlist.graph" combine="interleave">
     <optional>
-      <attribute name="type" a:defaultValue="vbar">
+      <attribute a:defaultValue="vbar">
+        <name ns="">type</name>
         <choice>
           <value>vbar</value>
           <value>hbar</value>
@@ -25,17 +28,24 @@
   </define>
   <define name="attlist.graph" combine="interleave">
     <optional>
-      <attribute name="background" a:defaultValue="#f5f5f5"/>
+      <attribute a:defaultValue="#f5f5f5">
+        <name ns="">background</name>
+        <text/>
+      </attribute>
     </optional>
   </define>
   <define name="attlist.graph" combine="interleave">
     <optional>
-      <attribute name="color" a:defaultValue="blue"/>
+      <attribute a:defaultValue="blue">
+        <name ns="">color</name>
+        <text/>
+      </attribute>
     </optional>
   </define>
   <define name="attlist.graph" combine="interleave">
     <optional>
-      <attribute name="legend" a:defaultValue="1">
+      <attribute a:defaultValue="1">
+        <name ns="">legend</name>
         <choice>
           <value>0</value>
           <value>1</value>
@@ -44,7 +54,8 @@
     </optional>
   </define>
   <define name="x">
-    <element name="x">
+    <element>
+      <name ns="">x</name>
       <ref name="attlist.x"/>
       <ref name="field"/>
     </element>
@@ -53,7 +64,8 @@
     <empty/>
   </define>
   <define name="y">
-    <element name="y">
+    <element>
+      <name ns="">y</name>
       <ref name="attlist.y"/>
       <oneOrMore>
         <ref name="field"/>
@@ -64,32 +76,46 @@
     <empty/>
   </define>
   <define name="field">
-    <element name="field">
+    <element>
+      <name ns="">field</name>
       <ref name="attlist.field"/>
       <empty/>
     </element>
   </define>
   <define name="attlist.field" combine="interleave">
-    <attribute name="name"/>
+    <attribute>
+      <name ns="">name</name>
+      <text/>
+    </attribute>
   </define>
   <define name="attlist.field" combine="interleave">
     <optional>
-      <attribute name="string"/>
+      <attribute>
+        <name ns="">string</name>
+        <text/>
+      </attribute>
     </optional>
   </define>
   <define name="attlist.field" combine="interleave">
     <optional>
-      <attribute name="key"/>
+      <attribute>
+        <name ns="">key</name>
+        <text/>
+      </attribute>
     </optional>
   </define>
   <define name="attlist.field" combine="interleave">
     <optional>
-      <attribute name="domain"/>
+      <attribute>
+        <name ns="">domain</name>
+        <text/>
+      </attribute>
     </optional>
   </define>
   <define name="attlist.field" combine="interleave">
     <optional>
-      <attribute name="fill">
+      <attribute>
+        <name ns="">fill</name>
         <choice>
           <value>0</value>
           <value>1</value>
@@ -99,7 +125,8 @@
   </define>
   <define name="attlist.field" combine="interleave">
     <optional>
-      <attribute name="empty">
+      <attribute>
+        <name ns="">empty</name>
         <choice>
           <value>0</value>
           <value>1</value>
@@ -109,17 +136,24 @@
   </define>
   <define name="attlist.field" combine="interleave">
     <optional>
-      <attribute name="color"/>
+      <attribute>
+        <name ns="">color</name>
+        <text/>
+      </attribute>
     </optional>
   </define>
   <define name="attlist.field" combine="interleave">
     <optional>
-      <attribute name="timedelta"/>
+      <attribute>
+        <name ns="">timedelta</name>
+        <text/>
+      </attribute>
     </optional>
   </define>
   <define name="attlist.field" combine="interleave">
     <optional>
-      <attribute name="interpolation" a:defaultValue="linear">
+      <attribute a:defaultValue="linear">
+        <name ns="">interpolation</name>
         <choice>
           <value>constant-left</value>
           <value>constant-right</value>
@@ -130,7 +164,8 @@
     </optional>
   </define>
   <define name="data">
-    <element name="data">
+    <element>
+      <name ns="">data</name>
       <ref name="attlist.data"/>
       <zeroOrMore>
         <ref name="xpath"/>
@@ -141,7 +176,8 @@
     <empty/>
   </define>
   <define name="xpath">
-    <element name="xpath">
+    <element>
+      <name ns="">xpath</name>
       <ref name="attlist.xpath"/>
       <zeroOrMore>
         <choice>
@@ -154,11 +190,15 @@
     </element>
   </define>
   <define name="attlist.xpath" combine="interleave">
-    <attribute name="expr"/>
+    <attribute>
+      <name ns="">expr</name>
+      <text/>
+    </attribute>
   </define>
   <define name="attlist.xpath" combine="interleave">
     <optional>
-      <attribute name="position" a:defaultValue="inside">
+      <attribute a:defaultValue="inside">
+        <name ns="">position</name>
         <choice>
           <value>inside</value>
           <value>replace</value>
diff -r 9c2b17ecf341 -r 21c4acd056a7 trytond/ir/ui/tree.rng
--- a/trytond/ir/ui/tree.rng    Mon Feb 04 22:23:12 2019 +0100
+++ b/trytond/ir/ui/tree.rng    Mon Feb 04 22:46:32 2019 +0100
@@ -1,7 +1,9 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<grammar xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0"; 
xmlns="http://relaxng.org/ns/structure/1.0";>
+<grammar xmlns="http://relaxng.org/ns/structure/1.0";
+         xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0";>
   <define name="tree">
-    <element name="tree">
+    <element>
+      <name ns="">tree</name>
       <ref name="attlist.tree"/>
       <zeroOrMore>
         <choice>
@@ -13,12 +15,16 @@
   </define>
   <define name="attlist.tree" combine="interleave">
     <optional>
-      <attribute name="on_write"/>
+      <attribute>
+        <name ns="">on_write</name>
+        <text/>
+      </attribute>
     </optional>
   </define>
   <define name="attlist.tree" combine="interleave">
     <optional>
-      <attribute name="editable">
+      <attribute>
+        <name ns="">editable</name>
         <choice>
           <value>top</value>
           <value>bottom</value>
@@ -28,12 +34,16 @@
   </define>
   <define name="attlist.tree" combine="interleave">
     <optional>
-      <attribute name="sequence"/>
+      <attribute>
+        <name ns="">sequence</name>
+        <text/>
+      </attribute>
     </optional>
   </define>
   <define name="attlist.tree" combine="interleave">
     <optional>
-      <attribute name="keyword_open" a:defaultValue="0">
+      <attribute a:defaultValue="0">
+        <name ns="">keyword_open</name>
         <choice>
           <value>0</value>
           <value>1</value>
@@ -43,7 +53,8 @@
   </define>
   <define name="attlist.tree" combine="interleave">
     <optional>
-      <attribute name="tree_state" a:defaultValue="0">
+      <attribute a:defaultValue="0">
+        <name ns="">tree_state</name>
         <choice>
           <value>0</value>
           <value>1</value>
@@ -52,7 +63,8 @@
     </optional>
   </define>
   <define name="field">
-    <element name="field">
+    <element>
+      <name ns="">field</name>
       <ref name="attlist.field"/>
       <zeroOrMore>
         <choice>
@@ -63,11 +75,15 @@
     </element>
   </define>
   <define name="attlist.field" combine="interleave">
-    <attribute name="name"/>
+    <attribute>
+      <name ns="">name</name>
+      <text/>
+    </attribute>
   </define>
   <define name="attlist.field" combine="interleave">
     <optional>
-      <attribute name="readonly">
+      <attribute>
+        <name ns="">readonly</name>
         <choice>
           <value>0</value>
           <value>1</value>
@@ -77,7 +93,8 @@
   </define>
   <define name="attlist.field" combine="interleave">
     <optional>
-      <attribute name="widget">
+      <attribute>
+        <name ns="">widget</name>
         <choice>
           <value>char</value>
           <value>many2one</value>
@@ -108,12 +125,16 @@
   </define>
   <define name="attlist.field" combine="interleave">
     <optional>
-      <attribute name="tree_invisible" a:defaultValue="0"/>
+      <attribute a:defaultValue="0">
+        <name ns="">tree_invisible</name>
+        <text/>
+      </attribute>
     </optional>
   </define>
   <define name="attlist.field" combine="interleave">
     <optional>
-      <attribute name="expand" a:defaultValue="0">
+      <attribute a:defaultValue="0">
+        <name ns="">expand</name>
         <choice>
           <value>0</value>
           <value>1</value>
@@ -123,27 +144,40 @@
   </define>
   <define name="attlist.field" combine="interleave">
     <optional>
-      <attribute name="icon"/>
+      <attribute>
+        <name ns="">icon</name>
+        <text/>
+      </attribute>
     </optional>
   </define>
   <define name="attlist.field" combine="interleave">
     <optional>
-      <attribute name="sum"/>
+      <attribute>
+        <name ns="">sum</name>
+        <text/>
+      </attribute>
     </optional>
   </define>
   <define name="attlist.field" combine="interleave">
     <optional>
-      <attribute name="width"/>
+      <attribute>
+        <name ns="">width</name>
+        <text/>
+      </attribute>
     </optional>
   </define>
   <define name="attlist.field" combine="interleave">
     <optional>
-      <attribute name="height"/>
+      <attribute>
+        <name ns="">height</name>
+        <text/>
+      </attribute>
     </optional>
   </define>
   <define name="attlist.field" combine="interleave">
     <optional>
-      <attribute name="orientation" a:defaultValue="left_to_right">
+      <attribute a:defaultValue="left_to_right">
+        <name ns="">orientation</name>
         <choice>
           <value>left_to_right</value>
           <value>right_to_left</value>
@@ -155,7 +189,8 @@
   </define>
   <define name="attlist.field" combine="interleave">
     <optional>
-      <attribute name="pre_validate" a:defaultValue="0">
+      <attribute a:defaultValue="0">
+        <name ns="">pre_validate</name>
         <choice>
           <value>0</value>
           <value>1</value>
@@ -165,7 +200,8 @@
   </define>
   <define name="attlist.field" combine="interleave">
     <optional>
-      <attribute name="completion" a:defaultValue="1">
+      <attribute a:defaultValue="1">
+        <name ns="">completion</name>
         <choice>
           <value>0</value>
           <value>1</value>
@@ -175,84 +211,127 @@
   </define>
   <define name="attlist.field" combine="interleave">
     <optional>
-      <attribute name="string"/>
+      <attribute>
+        <name ns="">string</name>
+        <text/>
+      </attribute>
     </optional>
   </define>
   <define name="attlist.field" combine="interleave">
     <optional>
-      <attribute name="factor" a:defaultValue="1"/>
+      <attribute a:defaultValue="1">
+        <name ns="">factor</name>
+        <text/>
+      </attribute>
     </optional>
   </define>
   <define name="attlist.field" combine="interleave">
     <optional>
-      <attribute name="filename"/>
+      <attribute>
+        <name ns="">filename</name>
+        <text/>
+      </attribute>
     </optional>
   </define>
   <define name="attlist.field" combine="interleave">
     <optional>
-      <attribute name="view_ids"/>
+      <attribute>
+        <name ns="">view_ids</name>
+        <text/>
+      </attribute>
     </optional>
   </define>
   <define name="prefix">
-    <element name="prefix">
+    <element>
+      <name ns="">prefix</name>
       <ref name="attlist.affix"/>
       <empty/>
     </element>
   </define>
   <define name="suffix">
-    <element name="suffix">
+    <element>
+      <name ns="">suffix</name>
       <ref name="attlist.affix"/>
       <empty/>
     </element>
   </define>
   <define name="attlist.affix" combine="interleave">
     <optional>
-      <attribute name="string"/>
+      <attribute>
+        <name ns="">string</name>
+        <text/>
+      </attribute>
     </optional>
   </define>
   <define name="attlist.affix" combine="interleave">
     <choice>
-      <attribute name="name"/>
-      <attribute name="id"/>
+      <attribute>
+        <name ns="">name</name>
+        <text/>
+      </attribute>
+      <attribute>
+        <name ns="">id</name>
+        <text/>
+      </attribute>
     </choice>
   </define>
   <define name="attlist.affix" combine="interleave">
     <optional>
-      <attribute name="icon"/>
+      <attribute>
+        <name ns="">icon</name>
+        <text/>
+      </attribute>
     </optional>
   </define>
   <define name="button">
-    <element name="button">
+    <element>
+      <name ns="">button</name>
       <ref name="attlist.button"/>
       <empty/>
     </element>
   </define>
   <define name="attlist.button" combine="interleave">
     <optional>
-      <attribute name="help"/>
+      <attribute>
+        <name ns="">help</name>
+        <text/>
+      </attribute>
     </optional>
   </define>
   <define name="attlist.button" combine="interleave">
     <optional>
-      <attribute name="string"/>
+      <attribute>
+        <name ns="">string</name>
+        <text/>
+      </attribute>
     </optional>
   </define>
   <define name="attlist.button" combine="interleave">
     <optional>
-      <attribute name="confirm"/>
+      <attribute>
+        <name ns="">confirm</name>
+        <text/>
+      </attribute>
     </optional>
   </define>
   <define name="attlist.button" combine="interleave">
-    <attribute name="name"/>
+    <attribute>
+      <name ns="">name</name>
+      <text/>
+    </attribute>
   </define>
   <define name="attlist.button" combine="interleave">
     <optional>
-      <attribute name="states"/>
+      <attribute>
+        <name ns="">states</name>
+        <text/>
+      </attribute>
     </optional>
   </define>
   <define name="attlist.button" combine="interleave">
     <optional>
-      <attribute name="keyword" a:defaultValue="action">
+      <attribute a:defaultValue="action">
+        <name ns="">keyword</name>
         <choice>
           <value>relate</value>
           <value>print</value>
@@ -263,12 +342,16 @@
   </define>
   <define name="attlist.button" combine="interleave">
     <optional>
-      <attribute name="change"/>
+      <attribute>
+        <name ns="">change</name>
+        <text/>
+      </attribute>
     </optional>
   </define>
   <define name="attlist.button" combine="interleave">
     <optional>
-      <attribute name="type">
+      <attribute>
+        <name ns="">type</name>
         <choice>
           <value>class</value>
           <value>instance</value>
@@ -278,11 +361,15 @@
   </define>
   <define name="attlist.button" combine="interleave">
     <optional>
-      <attribute name="tree_invisible" a:defaultValue="0"/>
+      <attribute a:defaultValue="0">
+        <name ns="">tree_invisible</name>
+        <text/>
+      </attribute>
     </optional>
   </define>
   <define name="data">
-    <element name="data">
+    <element>
+      <name ns="">data</name>
       <ref name="attlist.data"/>
       <zeroOrMore>
         <ref name="xpath"/>
@@ -293,7 +380,8 @@
     <empty/>
   </define>
   <define name="xpath">
-    <element name="xpath">
+    <element>
+      <name ns="">xpath</name>
       <ref name="attlist.xpath"/>
       <zeroOrMore>
         <choice>
@@ -305,11 +393,15 @@
     </element>
   </define>
   <define name="attlist.xpath" combine="interleave">
-    <attribute name="expr"/>
+    <attribute>
+      <name ns="">expr</name>
+      <text/>
+    </attribute>
   </define>
   <define name="attlist.xpath" combine="interleave">
     <optional>
-      <attribute name="position" a:defaultValue="inside">
+      <attribute a:defaultValue="inside">
+        <name ns="">position</name>
         <choice>
           <value>inside</value>
           <value>replace</value>
diff -r 9c2b17ecf341 -r 21c4acd056a7 trytond/tryton.rng
--- /dev/null   Thu Jan 01 00:00:00 1970 +0000
+++ b/trytond/tryton.rng        Mon Feb 04 22:46:32 2019 +0100
@@ -0,0 +1,216 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<grammar xmlns="http://relaxng.org/ns/structure/1.0";
+         xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0";>
+  <define name="tryton">
+    <element>
+      <name ns="">tryton</name>
+      <ref name="attlist.tryton"/>
+      <zeroOrMore>
+        <ref name="data"/>
+      </zeroOrMore>
+    </element>
+  </define>
+  <define name="attlist.tryton" combine="interleave">
+    <empty/>
+  </define>
+  <define name="data">
+    <element>
+      <name ns="">data</name>
+      <ref name="attlist.data"/>
+      <zeroOrMore>
+        <choice>
+          <ref name="record"/>
+          <ref name="menuitem"/>
+        </choice>
+      </zeroOrMore>
+    </element>
+  </define>
+  <define name="attlist.data" combine="interleave">
+    <optional>
+      <attribute a:defaultValue="0">
+        <name ns="">noupdate</name>
+        <choice>
+          <value>0</value>
+          <value>1</value>
+        </choice>
+      </attribute>
+    </optional>
+  </define>
+  <define name="attlist.data" combine="interleave">
+    <optional>
+      <attribute a:defaultValue="0">
+        <name ns="">grouped</name>
+        <choice>
+          <value>0</value>
+          <value>1</value>
+        </choice>
+      </attribute>
+    </optional>
+  </define>
+  <define name="attlist.data" combine="interleave">
+    <attribute>
+      <name ns="">depends</name>
+      <text/>
+    </attribute>
+  </define>
+  <define name="record">
+    <element>
+      <name ns="">record</name>
+      <ref name="attlist.record"/>
+      <zeroOrMore>
+        <ref name="field"/>
+      </zeroOrMore>
+    </element>
+  </define>
+  <define name="attlist.record" combine="interleave">
+    <attribute>
+      <name ns="">model</name>
+      <text/>
+    </attribute>
+  </define>
+  <define name="attlist.record" combine="interleave">
+    <attribute>
+      <name ns="">id</name>
+      <text/>
+    </attribute>
+  </define>
+  <define name="attlist.record" combine="interleave">
+    <optional>
+      <attribute a:defaultValue="0">
+        <name ns="">update</name>
+        <choice>
+          <value>0</value>
+          <value>1</value>
+        </choice>
+      </attribute>
+    </optional>
+  </define>
+  <define name="field">
+    <element>
+      <name ns="">field</name>
+      <ref name="attlist.field"/>
+      <text/>
+    </element>
+  </define>
+  <define name="attlist.field" combine="interleave">
+    <attribute>
+      <name ns="">name</name>
+      <text/>
+    </attribute>
+  </define>
+  <define name="attlist.field" combine="interleave">
+    <optional>
+      <attribute>
+        <name ns="">search</name>
+        <text/>
+      </attribute>
+    </optional>
+  </define>
+  <define name="attlist.field" combine="interleave">
+    <optional>
+      <attribute>
+        <name ns="">ref</name>
+        <text/>
+      </attribute>
+    </optional>
+  </define>
+  <define name="attlist.field" combine="interleave">
+    <optional>
+      <attribute>
+        <name ns="">eval</name>
+        <text/>
+      </attribute>
+    </optional>
+  </define>
+  <define name="attlist.field" combine="interleave">
+    <optional>
+      <attribute>
+        <name ns="">pyson</name>
+        <choice>
+          <value>0</value>
+          <value>1</value>
+        </choice>
+      </attribute>
+    </optional>
+  </define>
+  <define name="attlist.field" combine="interleave">
+    <optional>
+      <attribute>
+        <name ns="">type</name>
+        <value>xml</value>
+      </attribute>
+    </optional>
+  </define>
+  <define name="menuitem">
+    <element>
+      <name ns="">menuitem</name>
+      <ref name="attlist.menuitem"/>
+      <empty/>
+    </element>
+  </define>
+  <define name="attlist.menuitem" combine="interleave">
+    <attribute>
+      <name ns="">id</name>
+      <text/>
+    </attribute>
+  </define>
+  <define name="attlist.menuitem" combine="interleave">
+    <optional>
+      <attribute>
+        <name ns="">name</name>
+        <text/>
+      </attribute>
+    </optional>
+  </define>
+  <define name="attlist.menuitem" combine="interleave">
+    <optional>
+      <attribute>
+        <name ns="">icon</name>
+        <text/>
+      </attribute>
+    </optional>
+  </define>
+  <define name="attlist.menuitem" combine="interleave">
+    <optional>
+      <attribute>
+        <name ns="">sequence</name>
+        <text/>
+      </attribute>
+    </optional>
+  </define>
+  <define name="attlist.menuitem" combine="interleave">
+    <optional>
+      <attribute>
+        <name ns="">parent</name>
+        <text/>
+      </attribute>
+    </optional>
+  </define>
+  <define name="attlist.menuitem" combine="interleave">
+    <optional>
+      <attribute>
+        <name ns="">action</name>
+        <text/>
+      </attribute>
+    </optional>
+  </define>
+  <define name="attlist.menuitem" combine="interleave">
+    <optional>
+      <attribute>
+        <name ns="">groups</name>
+        <text/>
+      </attribute>
+    </optional>
+  </define>
+  <define name="attlist.menuitem" combine="interleave">
+    <optional>
+      <attribute>
+        <name ns="">active</name>
+        <text/>
+      </attribute>
+    </optional>
+  </define>
+  <start>
+    <ref name="tryton"/>
+  </start>
+</grammar>

Reply via email to