예제 #1
0
        public string ToString(string format)
        {
            string[]      sa;
            StringBuilder sb;
            bool          isXQ;

            if (format == "S")
            {
                sb = new StringBuilder();
                sb.Append(Cardinality.ToString(format));
                sb.Append(';');

                for (int i = 0; i < Count; i++)
                {
                    if (i != 0)
                    {
                        sb.Append('|');
                    }
                    sb.Append(this[i].TypeCode.ToString());
                }

                sb.Append(';');
                sb.Append(IsStrict);
                return(sb.ToString());
            }

            isXQ = (format == "X");

            if (Cardinality == XmlQueryCardinality.None)
            {
                return("none");
            }
            else if (Cardinality == XmlQueryCardinality.Zero)
            {
                return("empty");
            }

            sb = new StringBuilder();

            switch (Count)
            {
            case 0:
                // This assert depends on the way we are going to represent None
                sb.Append("none");
                break;

            case 1:
                sb.Append(this[0].ItemTypeToString(isXQ));
                break;

            default:
                sa = new string[Count];
                for (int i = 0; i < Count; i++)
                {
                    sa[i] = this[i].ItemTypeToString(isXQ);
                }

                Array.Sort(sa);

                sb = new StringBuilder();
                sb.Append('(');
                sb.Append(sa[0]);
                for (int i = 1; i < sa.Length; i++)
                {
                    sb.Append(" | ");
                    sb.Append(sa[i]);
                }

                sb.Append(')');
                break;
            }

            sb.Append(Cardinality.ToString());

            if (!isXQ && IsDod)
            {
                sb.Append('#');
            }

            return(sb.ToString());
        }
 /// <summary>
 /// Serializes the specified cardinality.
 /// </summary>
 /// <param name="cardinality">The cardinality.</param>
 private void Serialize(Cardinality cardinality)
 {
     _writer.Write(cardinality.ToString().ToLowerInvariant());
 }