*** empty log message ***
[m17n/m17n-lib-cs.git] / XmlExpr.cs
index 1dbff0f..6337449 100644 (file)
@@ -435,6 +435,8 @@ namespace System.Xml.Expression
 
        private static bool SubsetP (string[] r1, string[] r2)
          {
+           if (r2 == null)
+             return true;
            foreach (string s in r1)
              if (! SubsetP (s, r2))
                return false;
@@ -443,6 +445,8 @@ namespace System.Xml.Expression
 
        private static bool SubsetP (string str, string[] r)
          {
+           if (r == null)
+             return true;
            foreach (string s in r)
              if (str == s)
                return true;
@@ -485,6 +489,8 @@ namespace System.Xml.Expression
 
        private static bool SubsetP (Symbol[] r1, Symbol[] r2)
          {
+           if (r2 == null)
+             return true;
            foreach (Symbol n in r1)
              if (! SubsetP (n, r2))
                return false;
@@ -493,6 +499,8 @@ namespace System.Xml.Expression
 
        private static bool SubsetP (Symbol name, Symbol[] r)
          {
+           if (r == null)
+             return true;
            foreach (Symbol n in r)
              if (name == n)
                return true;
@@ -750,7 +758,7 @@ namespace System.Xml.Expression
        Variable vari;
 
        node = node.FirstChild;
-       if (node.Name == Ndescription)
+       if (node != null && node.Name == Ndescription)
          {
            desc = node.InnerText;
            node = node.NextSibling;
@@ -759,10 +767,15 @@ namespace System.Xml.Expression
          desc = null;
        if (node != null)
          {
-           Symbol type = node.Name;
+           XmlNode nn;
+           if (node.Name == "value")
+             nn = node.FirstChild;
+           else
+             nn = node;
+           Symbol type = nn.Name;
            XmlNodeList range_list = null;
            int nranges = 0;
-           string val = node.InnerText;
+           string val = nn.InnerText;
 
            node = node.NextSibling;
            if (node != null)
@@ -792,7 +805,7 @@ namespace System.Xml.Expression
                          {
                            range[i * 2]
                              = range[i * 2 + 1]
-                             = parse_integer (n.InnerText);
+                             = parse_integer (n.FirstChild.InnerText);
                          }
                      }
                  }
@@ -818,7 +831,7 @@ namespace System.Xml.Expression
                  {
                    range = new string[nranges];
                    for (int i = 0; i < nranges; i++)
-                     range[i] = range_list[i].InnerText;
+                     range[i] = range_list[i].FirstChild.InnerText;
                  }
 
                if (variables.TryGetValue (name, out vari))
@@ -842,7 +855,7 @@ namespace System.Xml.Expression
                  {
                    range = new Symbol[nranges];
                    for (int i = 0; i < nranges; i++)
-                     range[i] = range_list[i].InnerText;
+                     range[i] = range_list[i].FirstChild.InnerText;
                  }
 
                if (variables.TryGetValue (name, out vari))