From: Peter Krempa <pkre...@redhat.com>

Extract the common bits of the domain definition <sysinfo> schema which
will be also later reused to construct schema for the host <sysinfo> top
level element.

Signed-off-by: Peter Krempa <pkre...@redhat.com>
---
 src/conf/schemas/domaincommon.rng  | 126 ++-----------------------
 src/conf/schemas/sysinfocommon.rng | 143 +++++++++++++++++++++++++++++
 2 files changed, 150 insertions(+), 119 deletions(-)
 create mode 100644 src/conf/schemas/sysinfocommon.rng

diff --git a/src/conf/schemas/domaincommon.rng 
b/src/conf/schemas/domaincommon.rng
index 183dd5db5e..2d6e15f144 100644
--- a/src/conf/schemas/domaincommon.rng
+++ b/src/conf/schemas/domaincommon.rng
@@ -7,6 +7,7 @@
   <include href="cputypes.rng"/>
   <include href="nwfilter_params.rng"/>
   <include href="privatedata.rng"/>
+  <include href="sysinfocommon.rng"/>

   <define name="createMode">
     <data type="unsignedInt">
@@ -7125,63 +7126,11 @@
             <value>smbios</value>
           </attribute>
           <interleave>
-            <optional>
-              <element name="bios">
-                <oneOrMore>
-                  <element name="entry">
-                    <attribute name="name">
-                      <ref name="sysinfo-bios-name"/>
-                    </attribute>
-                    <ref name="sysinfo-value"/>
-                  </element>
-                </oneOrMore>
-              </element>
-            </optional>
-            <optional>
-              <element name="system">
-                <oneOrMore>
-                  <element name="entry">
-                    <attribute name="name">
-                      <ref name="sysinfo-system-name"/>
-                    </attribute>
-                    <ref name="sysinfo-value"/>
-                  </element>
-                </oneOrMore>
-              </element>
-            </optional>
-            <zeroOrMore>
-              <element name="baseBoard">
-                <oneOrMore>
-                  <element name="entry">
-                    <attribute name="name">
-                      <ref name="sysinfo-baseBoard-name"/>
-                    </attribute>
-                    <ref name="sysinfo-value"/>
-                  </element>
-                </oneOrMore>
-              </element>
-            </zeroOrMore>
-            <optional>
-              <element name="chassis">
-                <oneOrMore>
-                  <element name="entry">
-                    <attribute name="name">
-                      <ref name="sysinfo-chassis-name"/>
-                    </attribute>
-                    <ref name="sysinfo-value"/>
-                  </element>
-                </oneOrMore>
-              </element>
-            </optional>
-            <optional>
-              <element name="oemStrings">
-                <oneOrMore>
-                  <element name="entry">
-                    <ref name="sysinfo-value"/>
-                  </element>
-                </oneOrMore>
-              </element>
-            </optional>
+            <ref name="sysinfo-smbios-group-bios"/>
+            <ref name="sysinfo-smbios-group-system"/>
+            <ref name="sysinfo-smbios-group-baseboard"/>
+            <ref name="sysinfo-smbios-group-chassis"/>
+            <ref name="sysinfo-smbios-group-oemstrings"/>
           </interleave>
         </group>
         <group>
@@ -7189,74 +7138,13 @@
             <value>fwcfg</value>
           </attribute>
           <zeroOrMore>
-            <element name="entry">
-              <attribute name="name">
-                <data type="string"/>
-              </attribute>
-              <choice>
-                <group>
-                  <attribute name="file">
-                    <data type="string"/>
-                  </attribute>
-                  <empty/>
-                </group>
-                <group>
-                  <ref name="sysinfo-value"/>
-                </group>
-              </choice>
-            </element>
+            <ref name="sysinfo-fwcfg-entry"/>
           </zeroOrMore>
         </group>
       </choice>
     </element>
   </define>

-  <define name="sysinfo-bios-name">
-    <choice>
-      <value>vendor</value>
-      <value>version</value>
-      <value>date</value>
-      <value>release</value>
-    </choice>
-  </define>
-
-  <define name="sysinfo-system-name">
-    <choice>
-      <value>manufacturer</value>
-      <value>product</value>
-      <value>version</value>
-      <value>serial</value>
-      <value>uuid</value>
-      <value>sku</value>
-      <value>family</value>
-    </choice>
-  </define>
-
-  <define name="sysinfo-baseBoard-name">
-    <choice>
-      <value>manufacturer</value>
-      <value>product</value>
-      <value>version</value>
-      <value>serial</value>
-      <value>asset</value>
-      <value>location</value>
-    </choice>
-  </define>
-
-  <define name="sysinfo-chassis-name">
-    <choice>
-      <value>manufacturer</value>
-      <value>version</value>
-      <value>serial</value>
-      <value>asset</value>
-      <value>sku</value>
-    </choice>
-  </define>
-
-  <define name="sysinfo-value">
-    <data type="string"/>
-  </define>
-
   <define name="acpiTable">
     <element name="acpi">
       <zeroOrMore>
diff --git a/src/conf/schemas/sysinfocommon.rng 
b/src/conf/schemas/sysinfocommon.rng
new file mode 100644
index 0000000000..dc3b761206
--- /dev/null
+++ b/src/conf/schemas/sysinfocommon.rng
@@ -0,0 +1,143 @@
+<?xml version="1.0"?>
+<grammar xmlns="http://relaxng.org/ns/structure/1.0"; 
datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes";>
+
+  <!-- This schema is not designed for standalone use -->
+
+  <define name="sysinfo-smbios-group-bios">
+    <optional>
+      <element name="bios">
+        <oneOrMore>
+          <element name="entry">
+            <attribute name="name">
+              <ref name="sysinfo-bios-name"/>
+            </attribute>
+            <ref name="sysinfo-value"/>
+          </element>
+        </oneOrMore>
+      </element>
+    </optional>
+  </define>
+
+  <define name="sysinfo-smbios-group-system">
+    <optional>
+      <element name="system">
+        <oneOrMore>
+          <element name="entry">
+            <attribute name="name">
+              <ref name="sysinfo-system-name"/>
+            </attribute>
+            <ref name="sysinfo-value"/>
+          </element>
+        </oneOrMore>
+      </element>
+    </optional>
+  </define>
+
+  <define name="sysinfo-smbios-group-baseboard">
+    <zeroOrMore>
+      <element name="baseBoard">
+        <oneOrMore>
+          <element name="entry">
+            <attribute name="name">
+              <ref name="sysinfo-baseBoard-name"/>
+            </attribute>
+            <ref name="sysinfo-value"/>
+          </element>
+        </oneOrMore>
+      </element>
+    </zeroOrMore>
+  </define>
+
+  <define name="sysinfo-smbios-group-chassis">
+    <optional>
+      <element name="chassis">
+        <oneOrMore>
+          <element name="entry">
+            <attribute name="name">
+              <ref name="sysinfo-chassis-name"/>
+            </attribute>
+            <ref name="sysinfo-value"/>
+          </element>
+        </oneOrMore>
+      </element>
+    </optional>
+  </define>
+
+  <define name="sysinfo-smbios-group-oemstrings">
+    <optional>
+      <element name="oemStrings">
+        <oneOrMore>
+          <element name="entry">
+            <ref name="sysinfo-value"/>
+          </element>
+        </oneOrMore>
+      </element>
+    </optional>
+  </define>
+
+  <define name="sysinfo-fwcfg-entry">
+    <element name="entry">
+      <attribute name="name">
+        <data type="string"/>
+      </attribute>
+      <choice>
+        <group>
+          <attribute name="file">
+            <data type="string"/>
+          </attribute>
+          <empty/>
+        </group>
+        <group>
+          <ref name="sysinfo-value"/>
+        </group>
+      </choice>
+    </element>
+  </define>
+
+  <define name="sysinfo-bios-name">
+    <choice>
+      <value>vendor</value>
+      <value>version</value>
+      <value>date</value>
+      <value>release</value>
+    </choice>
+  </define>
+
+  <define name="sysinfo-system-name">
+    <choice>
+      <value>manufacturer</value>
+      <value>product</value>
+      <value>version</value>
+      <value>serial</value>
+      <value>uuid</value>
+      <value>sku</value>
+      <value>family</value>
+    </choice>
+  </define>
+
+  <define name="sysinfo-baseBoard-name">
+    <choice>
+      <value>manufacturer</value>
+      <value>product</value>
+      <value>version</value>
+      <value>serial</value>
+      <value>asset</value>
+      <value>location</value>
+    </choice>
+  </define>
+
+  <define name="sysinfo-chassis-name">
+    <choice>
+      <value>manufacturer</value>
+      <value>version</value>
+      <value>serial</value>
+      <value>asset</value>
+      <value>sku</value>
+    </choice>
+  </define>
+
+  <define name="sysinfo-value">
+    <data type="string"/>
+  </define>
+
+</grammar>
-- 
2.50.0

Reply via email to