Dear maintainer of openbox-3.4.6.1_0ubuntu2,

I hereby would like to submit a patch to correct
the version of the XML-Schema file

    /usr/share/doc/openbox/rc.xsd

that comes bundled in

    openbox_3.4.6.1_0ubuntu2-i386.deb.

The original file (identical to the upstream file)
is not even close to validate against the DTD of W3.org,
but this is remedied with my patch. 

The new schema file is able to validate

    /etc/xdg/openbox/rc.xml

except for one instance where the original developers
have incorrectly used a value "yes" (i.e. "ob:bool")
where the schema definition demands "xsd:integer", as follows:

246   <keybind key="C-A-Tab">
247     <action name="NextWindow">
248       <panels>yes</panels><desktop>yes</desktop>
249     </action>
250   </keybind>

I contructed a clause for the new element "startupnotify"
based on the example presented on the changelog site of Openbox.
This covers also the text in the Ubuntu package.


Best regards,

Mats Erik Andersson <[EMAIL PROTECTED]>

------------
--- /mnt/usr/share/doc/openbox/rc.xsd.orig	2008-11-27 16:18:13.000000000 +0100
+++ /mnt/usr/share/doc/openbox/rc.xsd	2008-11-28 11:23:01.000000000 +0100
@@ -4,2 +4,11 @@
 
+<!-- Fetch the files XMLScheme.dtd and datatypes.dtd from
+     the namespace URL below. Then validation will be successful. -->
+
+<!DOCTYPE schema SYSTEM "XMLSchema.dtd" [
+<!ATTLIST schema xmlns:ob CDATA #IMPLIED>
+<!ENTITY % p "xsd:">
+<!ENTITY % s ":xsd">
+]>
+
 <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema";
@@ -7,3 +16,4 @@
     xmlns:ob="http://openbox.org/3.4/rc";
-    elementFormDefault="qualified">
+    elementFormDefault="qualified"
+    attributeFormDefault="unqualified">
     <!--
@@ -16,13 +26,16 @@
         <xsd:complexType>
-            <xsd:element name="resistance" type="ob:resistance"/>
-            <xsd:element name="focus" type="ob:focus"/>
-            <xsd:element name="placement" type="ob:placement"/>
-            <xsd:element name="theme" type="ob:theme"/>
-            <xsd:element name="desktops" type="ob:desktops"/>
-            <xsd:element name="resize" type="ob:resize"/>
-            <xsd:element name="dock" type="ob:dock"/>
-            <xsd:element name="keyboard" type="ob:keyboard"/>
-            <xsd:element name="mouse" type="ob:mouse"/>
-            <xsd:element name="menu" type="ob:menu"/>
-            <xsd:element name="applications" type="ob:applications"/>
+            <xsd:all>
+                <xsd:element name="resistance" type="ob:resistance"/>
+                <xsd:element name="focus" type="ob:focus"/>
+                <xsd:element name="placement" type="ob:placement"/>
+                <xsd:element name="theme" type="ob:theme"/>
+                <xsd:element name="desktops" type="ob:desktops"/>
+                <xsd:element name="resize" type="ob:resize"/>
+                <xsd:element name="margins" type="ob:margins"/>
+                <xsd:element name="dock" type="ob:dock"/>
+                <xsd:element name="keyboard" type="ob:keyboard"/>
+                <xsd:element name="mouse" type="ob:mouse"/>
+                <xsd:element name="menu" type="ob:menu"/>
+                <xsd:element name="applications" type="ob:applications"/>
+            </xsd:all>
         </xsd:complexType>
@@ -36,4 +49,6 @@
         </xsd:annotation>
-        <xsd:element minOccurs="0" name="strength" type="xsd:integer"/>
-        <xsd:element minOccurs="0" name="screen_edge_strength" type="xsd:integer"/>
+        <xsd:all>
+            <xsd:element minOccurs="0" name="strength" type="xsd:integer"/>
+            <xsd:element minOccurs="0" name="screen_edge_strength" type="xsd:integer"/>
+        </xsd:all>
     </xsd:complexType>
@@ -43,8 +58,10 @@
         </xsd:annotation>
-        <xsd:element minOccurs="0" name="focusNew" type="ob:bool"/>
-        <xsd:element minOccurs="0" name="focusLast" type="ob:bool"/>
-        <xsd:element minOccurs="0" name="followMouse" type="ob:bool"/>
-        <xsd:element minOccurs="0" name="underMouse" type="ob:bool"/>
-        <xsd:element minOccurs="0" name="focusDelay" type="xsd:integer"/>
-        <xsd:element minOccurs="0" name="raiseOnFocus" type="ob:bool"/>
+        <xsd:all>
+            <xsd:element minOccurs="0" name="focusNew" type="ob:bool"/>
+            <xsd:element minOccurs="0" name="followMouse" type="ob:bool"/>
+            <xsd:element minOccurs="0" name="focusLast" type="ob:bool"/>
+            <xsd:element minOccurs="0" name="underMouse" type="ob:bool"/>
+            <xsd:element minOccurs="0" name="focusDelay" type="xsd:integer"/>
+            <xsd:element minOccurs="0" name="raiseOnFocus" type="ob:bool"/>
+        </xsd:all>
     </xsd:complexType>
@@ -54,5 +71,7 @@
         </xsd:annotation>
-        <xsd:element name="policy" type="ob:placementpolicy"/>
-        <xsd:element name="center" type="ob:bool"/>
-        <xsd:element name="monitor" type="ob:placementmonitor"/>
+        <xsd:sequence>
+            <xsd:element name="policy" type="ob:placementpolicy"/>
+            <xsd:element name="center" type="ob:bool"/>
+            <xsd:element name="monitor" type="ob:placementmonitor"/>
+        </xsd:sequence>
     </xsd:complexType>
@@ -62,19 +81,25 @@
         </xsd:annotation>
-        <xsd:element minOccurs="0" name="top" type="xsd:integer"/>
-        <xsd:element minOccurs="0" name="left" type="xsd:integer"/>
-        <xsd:element minOccurs="0" name="right" type="xsd:integer"/>
-        <xsd:element minOccurs="0" name="bottom" type="xsd:integer"/>
+        <xsd:all>
+            <xsd:element minOccurs="0" name="top" type="xsd:integer"/>
+            <xsd:element minOccurs="0" name="bottom" type="xsd:integer"/>
+            <xsd:element minOccurs="0" name="left" type="xsd:integer"/>
+            <xsd:element minOccurs="0" name="right" type="xsd:integer"/>
+        </xsd:all>
     </xsd:complexType>              
     <xsd:complexType name="theme">
-        <xsd:element minOccurs="0" name="name" type="xsd:string"/>
-        <xsd:element minOccurs="0" name="titleLayout" type="xsd:string"/>
-        <xsd:element minOccurs="0" name="keepBorder" type="ob:bool"/>
-        <xsd:element minOccurs="0" name="animateIconify" type="ob:bool"/>
-        <xsd:element minOccurs="0" name="font" type="ob:font"/>
+        <xsd:sequence>
+            <xsd:element minOccurs="0" name="name" type="xsd:string"/>
+            <xsd:element minOccurs="0" name="titleLayout" type="xsd:string"/>
+            <xsd:element minOccurs="0" name="keepBorder" type="ob:bool"/>
+            <xsd:element minOccurs="0" name="animateIconify" type="ob:bool"/>
+            <xsd:element minOccurs="0" maxOccurs="unbounded" name="font" type="ob:font"/>
+        </xsd:sequence>
     </xsd:complexType>
     <xsd:complexType name="font">
-        <xsd:element minOccurs="0" name="name" type="xsd:string"/>
-        <xsd:element minOccurs="0" name="size" type="xsd:integer"/>
-        <xsd:element minOccurs="0" name="weight" type="ob:fontweight"/>
-        <xsd:element minOccurs="0" name="slant" type="ob:fontslant"/>
+        <xsd:all>
+            <xsd:element minOccurs="0" name="name" type="xsd:string"/>
+            <xsd:element minOccurs="0" name="size" type="xsd:integer"/>
+            <xsd:element minOccurs="0" name="weight" type="ob:fontweight"/>
+            <xsd:element minOccurs="0" name="slant" type="ob:fontslant"/>
+        </xsd:all>
         <xsd:attribute name="place" type="ob:fontplace" use="required"/>
@@ -85,52 +110,66 @@
         </xsd:annotation>
-        <xsd:element minOccurs="0" name="number" type="xsd:integer"/>
-        <xsd:element minOccurs="0" name="firstdesk" type="xsd:integer"/>
-        <xsd:element minOccurs="0" name="names">
-            <xsd:complexType>
-                <xsd:element maxOccurs="unbounded" name="name" type="xsd:string"/>
-            </xsd:complexType>
-        </xsd:element>
-        <xsd:element minOccurs="0" name="popupTime" type="xsd:integer"/>
+        <xsd:all>
+            <xsd:element minOccurs="0" name="number" type="xsd:integer"/>
+            <xsd:element minOccurs="0" name="firstdesk" type="xsd:integer"/>
+            <xsd:element minOccurs="0" name="names">
+                <xsd:complexType>
+                <xsd:sequence>
+                    <xsd:element minOccurs="0" maxOccurs="unbounded" name="name" type="xsd:string"/>
+                </xsd:sequence>
+                </xsd:complexType>
+            </xsd:element>
+            <xsd:element minOccurs="0" name="popupTime" type="xsd:integer"/>
+        </xsd:all>
     </xsd:complexType>
     <xsd:complexType name="resize">
-        <xsd:element minOccurs="0" name="drawContents" type="ob:bool"/>
-        <xsd:element minOccurs="0" name="popupShow" type="ob:popupshow"/>
-        <xsd:element minOccurs="0" name="popupPosition" type="ob:popupposition"/>
-        <xsd:element minOccurs="0" name="popupPosition" type="ob:popupfixedposition"/>
+        <xsd:all>
+            <xsd:element minOccurs="0" name="drawContents" type="ob:bool"/>
+            <xsd:element minOccurs="0" name="popupShow" type="ob:popupshow"/>
+            <xsd:element minOccurs="0" name="popupPosition" type="ob:popupposition"/>
+            <xsd:element minOccurs="0" name="popupFixedPosition" type="ob:popupfixedposition"/>
+        </xsd:all>
     </xsd:complexType>
     <xsd:complexType name="popupfixedposition">
-        <xsd:element minOccurs="0" name="x" type="ob:center_or_int"/>
-        <xsd:element minOccurs="0" name="y" type="ob:center_or_int"/>
+        <xsd:all>
+            <xsd:element minOccurs="0" name="x" type="ob:center_or_int"/>
+            <xsd:element minOccurs="0" name="y" type="ob:center_or_int"/>
+        </xsd:all>
     </xsd:complexType>
     <xsd:complexType name="dock">
-        <xsd:element minOccurs="0" name="position" type="ob:dock_position"/>
-        <xsd:element minOccurs="0" name="floatingX" type="xsd:integer"/>
-        <xsd:element minOccurs="0" name="floatingY" type="xsd:integer"/>
-        <xsd:element minOccurs="0" name="noStrut" type="ob:bool"/>
-        <xsd:element minOccurs="0" name="stacking" type="ob:layer"/>
-        <xsd:element minOccurs="0" name="direction" type="ob:direction"/>
-        <xsd:element minOccurs="0" name="autoHide" type="ob:bool"/>
-        <xsd:element minOccurs="0" name="hideDelay" type="xsd:integer"/>
-        <xsd:element minOccurs="0" name="showDelay" type="xsd:integer"/>
-        <xsd:element minOccurs="0" name="moveButton" type="ob:button"/>
+        <xsd:all>
+            <xsd:element minOccurs="0" name="position" type="ob:dock_position"/>
+            <xsd:element minOccurs="0" name="floatingX" type="xsd:integer"/>
+            <xsd:element minOccurs="0" name="floatingY" type="xsd:integer"/>
+            <xsd:element minOccurs="0" name="noStrut" type="ob:bool"/>
+            <xsd:element minOccurs="0" name="stacking" type="ob:layer"/>
+            <xsd:element minOccurs="0" name="direction" type="ob:direction"/>
+            <xsd:element minOccurs="0" name="autoHide" type="ob:bool"/>
+            <xsd:element minOccurs="0" name="hideDelay" type="xsd:integer"/>
+            <xsd:element minOccurs="0" name="showDelay" type="xsd:integer"/>
+            <xsd:element minOccurs="0" name="moveButton" type="ob:button"/>
+        </xsd:all>
     </xsd:complexType>
     <xsd:complexType name="action">
-        <xsd:element minOccurs="0" name="execute" type="xsd:string"/>
-        <xsd:element minOccurs="0" name="command" type="xsd:string"/>
-        <xsd:element minOccurs="0" name="menu" type="xsd:string"/>
-        <xsd:element minOccurs="0" name="delta" type="xsd:integer"/>
-        <xsd:element minOccurs="0" name="x" type="xsd:integer"/>
-        <xsd:element minOccurs="0" name="y" type="xsd:integer"/>
-        <xsd:element minOccurs="0" name="left" type="xsd:integer"/>
-        <xsd:element minOccurs="0" name="right" type="xsd:integer"/>
-        <xsd:element minOccurs="0" name="up" type="xsd:integer"/>
-        <xsd:element minOccurs="0" name="down" type="xsd:integer"/>
-        <xsd:element minOccurs="0" name="desktop" type="xsd:integer"/>
-        <xsd:element minOccurs="0" name="wrap" type="ob:bool"/>
-        <xsd:element minOccurs="0" name="follow" type="ob:bool"/>
-        <xsd:element minOccurs="0" name="dialog" type="ob:bool"/>
-        <xsd:element minOccurs="0" name="panels" type="ob:bool"/>
-        <xsd:element minOccurs="0" name="here" type="ob:bool"/>
-        <xsd:element minOccurs="0" name="linear" type="ob:bool"/>
-        <xsd:element minOccurs="0" name="group" type="ob:bool"/>
+        <xsd:all>
+            <xsd:element minOccurs="0" name="execute" type="xsd:string"/>
+            <xsd:element minOccurs="0" name="startupnotify" type="ob:notify"/>
+            <xsd:element minOccurs="0" name="command" type="xsd:string"/>
+            <xsd:element minOccurs="0" name="menu" type="xsd:string"/>
+            <xsd:element minOccurs="0" name="delta" type="xsd:integer"/>
+            <xsd:element minOccurs="0" name="x" type="xsd:integer"/>
+            <xsd:element minOccurs="0" name="y" type="xsd:integer"/>
+            <xsd:element minOccurs="0" name="left" type="xsd:integer"/>
+            <xsd:element minOccurs="0" name="right" type="xsd:integer"/>
+            <xsd:element minOccurs="0" name="up" type="xsd:integer"/>
+            <xsd:element minOccurs="0" name="down" type="xsd:integer"/>
+            <xsd:element minOccurs="0" name="desktop" type="xsd:integer"/>
+            <xsd:element minOccurs="0" name="edge" type="xsd:string"/>
+            <xsd:element minOccurs="0" name="wrap" type="ob:bool"/>
+            <xsd:element minOccurs="0" name="follow" type="ob:bool"/>
+            <xsd:element minOccurs="0" name="dialog" type="ob:bool"/>
+            <xsd:element minOccurs="0" name="panels" type="ob:bool"/>
+            <xsd:element minOccurs="0" name="here" type="ob:bool"/>
+            <xsd:element minOccurs="0" name="linear" type="ob:bool"/>
+            <xsd:element minOccurs="0" name="group" type="ob:bool"/>
+        </xsd:all>
         <xsd:attribute name="name" type="ob:actionname" use="required"/>
@@ -146,7 +185,11 @@
     <xsd:complexType name="keyboard">
-        <xsd:element minOccurs="0" name="chainQuitKey" type="ob:keyname"/>
-        <xsd:element maxOccurs="unbounded" name="keybind" type="ob:keybind"/>
+        <xsd:sequence>
+            <xsd:element minOccurs="0" name="chainQuitKey" type="ob:keyname"/>
+            <xsd:element maxOccurs="unbounded" name="keybind" type="ob:keybind"/>
+        </xsd:sequence>
     </xsd:complexType>
     <xsd:complexType name="mousebind">
-        <xsd:element maxOccurs="unbounded" name="action" type="ob:action"/>
+        <xsd:sequence>
+            <xsd:element maxOccurs="unbounded" name="action" type="ob:action"/>
+        </xsd:sequence>
         <xsd:attribute name="action" type="ob:mouseaction" use="required"/>
@@ -155,3 +198,5 @@
     <xsd:complexType name="context">
-        <xsd:element maxOccurs="unbounded" name="mousebind" type="ob:mousebind"/>
+        <xsd:sequence>
+            <xsd:element maxOccurs="unbounded" name="mousebind" type="ob:mousebind"/>
+        </xsd:sequence>
         <xsd:attribute name="name" type="ob:contextname" use="required"/>
@@ -159,33 +204,41 @@
     <xsd:complexType name="mouse">
-        <xsd:element minOccurs="0" name="dragThreshold" type="xsd:integer"/>
-        <xsd:element minOccurs="0" name="doubleClickTime" type="xsd:integer"/>
-        <xsd:element minOccurs="0" name="screenEdgeWarpTime" type="xsd:integer"/>
-        <xsd:element maxOccurs="unbounded" name="context" type="ob:context"/>
+        <xsd:sequence>
+            <xsd:element minOccurs="0" name="dragThreshold" type="xsd:integer"/>
+            <xsd:element minOccurs="0" name="doubleClickTime" type="xsd:integer"/>
+            <xsd:element minOccurs="0" name="screenEdgeWarpTime" type="xsd:integer"/>
+            <xsd:element maxOccurs="unbounded" name="context" type="ob:context"/>
+        </xsd:sequence>
     </xsd:complexType>
     <xsd:complexType name="menu">
-        <xsd:element maxOccurs="unbounded" name="file" type="xsd:string"/>
-        <xsd:element minOccurs="0" name="hideDelay" type="xsd:integer"/>
-        <xsd:element minOccurs="0" name="middle" type="ob:bool"/>
-        <xsd:element minOccurs="0" name="submenuShowDelay" type="xsd:integer"/>
-        <xsd:element minOccurs="0" name="applicationIcons" type="ob:bool"/>
-        <xsd:element minOccurs="0" name="manageDesktops" type="ob:bool"/>
+        <xsd:sequence>
+            <xsd:element maxOccurs="unbounded" name="file" type="xsd:string"/>
+            <xsd:element minOccurs="0" name="hideDelay" type="xsd:integer"/>
+            <xsd:element minOccurs="0" name="middle" type="ob:bool"/>
+            <xsd:element minOccurs="0" name="submenuShowDelay" type="xsd:integer"/>
+            <xsd:element minOccurs="0" name="applicationIcons" type="ob:bool"/>
+            <xsd:element minOccurs="0" name="manageDesktops" type="ob:bool"/>
+        </xsd:sequence>
     </xsd:complexType>
     <xsd:complexType name="window_position">
-        <xsd:element name="x" type="ob:center_or_int"/>
-        <xsd:element name="y" type="ob:center_or_int"/>
-	<xsd:element name="monitor" type="ob:mouse_or_int"/>	
-        <xsd:element minOccurs="0" name="head" type="xsd:string"/>
+        <xsd:sequence>
+            <xsd:element name="x" type="ob:center_or_int"/>
+            <xsd:element name="y" type="ob:center_or_int"/>
+            <xsd:element name="monitor" type="ob:mouse_or_int"/>    
+            <xsd:element minOccurs="0" name="head" type="xsd:string"/>
+        </xsd:sequence>
     </xsd:complexType>
     <xsd:complexType name="application">
-        <xsd:element minOccurs="0" name="decor" type="xsd:bool"/>
-        <xsd:element minOccurs="0" name="shade" type="ob:bool"/>
-        <xsd:element minOccurs="0" name="position" type="ob:window_position"/>
-        <xsd:element minOccurs="0" name="focus" type="xsd:string"/>
-        <xsd:element minOccurs="0" name="desktop" type="xsd:integer"/>
-        <xsd:element minOccurs="0" name="layer" type="ob:layer"/>
-        <xsd:element minOccurs="0" name="iconic" type="ob:bool"/>
-        <xsd:element minOccurs="0" name="skip_pager" type="ob:bool"/>
-        <xsd:element minOccurs="0" name="skip_taskbar" type="ob:bool"/>
-        <xsd:element minOccurs="0" name="fullscreen" type="ob:bool"/>
-        <xsd:element minOccurs="0" name="maximized" type="ob:maximization"/>
+        <xsd:all>
+            <xsd:element minOccurs="0" name="decor" type="ob:bool"/>
+            <xsd:element minOccurs="0" name="shade" type="ob:bool"/>
+            <xsd:element minOccurs="0" name="position" type="ob:window_position"/>
+            <xsd:element minOccurs="0" name="focus" type="xsd:string"/>
+            <xsd:element minOccurs="0" name="desktop" type="xsd:integer"/>
+            <xsd:element minOccurs="0" name="layer" type="ob:layer"/>
+            <xsd:element minOccurs="0" name="iconic" type="ob:bool"/>
+            <xsd:element minOccurs="0" name="skip_pager" type="ob:bool"/>
+            <xsd:element minOccurs="0" name="skip_taskbar" type="ob:bool"/>
+            <xsd:element minOccurs="0" name="fullscreen" type="ob:bool"/>
+            <xsd:element minOccurs="0" name="maximized" type="ob:maximization"/>
+        </xsd:all>
         <!-- at least one of these must be present -->
@@ -196,3 +249,12 @@
     <xsd:complexType name="applications">
-        <xsd:element minOccurs="0" maxOccurs="unbounded" name="application" type="ob:application"/>
+        <xsd:sequence>
+            <xsd:element minOccurs="0" maxOccurs="unbounded" name="application" type="ob:application"/>
+        </xsd:sequence>
+    </xsd:complexType>
+    <xsd:complexType name="notify">
+        <xsd:all>
+            <xsd:element minOccurs="0" name="enabled" type="ob:bool"/>
+            <xsd:element minOccurs="0" name="name" type="xsd:string"/>
+            <xsd:element minOccurs="0" name="icon" type="xsd:string"/>
+        </xsd:all>
     </xsd:complexType>
@@ -344,2 +406,4 @@
             <xsd:enumeration value="C-A-Down"/>
+            <xsd:enumeration value="A-S-Up"/>
+            <xsd:enumeration value="A-S-Down"/>
         </xsd:restriction>
@@ -408,3 +472,3 @@
             <!-- how do we do all substrings and permutations? -->
-            <xsd:pattern value="(A-)?(S-)?(A-)?(C-)?(A-)?(S-)?(A-)?[a-zA-Z0-9]*"/>
+            <xsd:pattern value="([ACMSW]-){,5}[a-zA-Z0-9]*"/>
         </xsd:restriction>
-- 
Ubuntu-motu mailing list
[email protected]
Modify settings or unsubscribe at: 
https://lists.ubuntu.com/mailman/listinfo/ubuntu-motu

Reply via email to