diff --git a/doc/dbus-specification.xml b/doc/dbus-specification.xml
index 3828db7f..05597619 100644
--- a/doc/dbus-specification.xml
+++ b/doc/dbus-specification.xml
@@ -295,13 +295,50 @@
The D-Bus protocol does not include type tags in the marshaled data; a
block of marshaled values must have a known type
- signature. The type signature is made up of type
- codes. A type code is an ASCII character representing the
+ signature. The type signature is made up of zero or more
+ single complete
+ types, each made up of one or more
+ type codes.
+
+
+
+ A type code is an ASCII character representing the
type of a value. Because ASCII characters are used, the type signature
will always form a valid ASCII string. A simple string compare
determines whether two type signatures are equivalent.
+
+ A single complete type is a sequence of type codes that fully describes
+ one type: either a basic type, or a single fully-described container type.
+ A single complete type is a basic type code, a variant type code,
+ an array with its element type, or a struct with its fields (all of which
+ are defined below). So the following signatures are not single complete
+ types:
+
+ "aa"
+
+
+ "(ii"
+
+
+ "ii)"
+
+ And the following signatures contain multiple complete types:
+
+ "ii"
+
+
+ "aiai"
+
+
+ "(ii)(ii)"
+
+ Note however that a single complete type may contain
+ multiple other single complete types, by containing a struct or dict
+ entry.
+
+
Basic types
@@ -384,34 +421,6 @@
-
- The phrase single complete type deserves some
- definition. A single complete type is a basic type code, a variant type code,
- an array with its element type, or a struct with its fields.
- So the following signatures are not single complete types:
-
- "aa"
-
-
- "(ii"
-
-
- "ii)"
-
- And the following signatures contain multiple complete types:
-
- "ii"
-
-
- "aiai"
-
-
- "(ii)(ii)"
-
- Note however that a single complete type may contain
- multiple other single complete types.
-
-
VARIANT has ASCII character 'v' as its type code. A marshaled value of
type VARIANT will have the signature of a single complete type as part