PrefixQName.cs source code in C# .NET

Source code for the .NET framework in C#

                        

Code:

/ Net / Net / 3.5.50727.3053 / DEVDIV / depot / DevDiv / releases / whidbey / netfxsp / ndp / fx / src / XmlUtils / System / Xml / Xsl / XsltOld / PrefixQName.cs / 1 / PrefixQName.cs

                            //------------------------------------------------------------------------------ 
// 
//     Copyright (c) Microsoft Corporation.  All rights reserved.
// 
// [....] 
//-----------------------------------------------------------------------------
 
namespace System.Xml.Xsl.XsltOld { 
    using Res = System.Xml.Utils.Res;
    using System; 
    using System.Diagnostics;
    using System.Xml;

    internal sealed class PrefixQName { 
        public string Prefix;
        public string Name; 
        public string Namespace; 

        internal void ClearPrefix() { 
            Prefix = string.Empty;
        }

        internal void SetQName(string qname) { 
            PrefixQName.ParseQualifiedName(qname, out Prefix, out Name);
        } 
 
        //
        // Parsing qualified names 
        //

        private static string ParseNCName(string qname, ref int position) {
            int qnameLength = qname.Length; 
            int nameStart = position;
            XmlCharType xmlCharType = XmlCharType.Instance; 
 
            if (
                qnameLength == position ||                           // Zero length ncname 
                ! xmlCharType.IsStartNCNameChar(qname[position])     // Start from invalid char
            ) {
                throw XsltException.Create(Res.Xslt_InvalidQName, qname);
            } 

            position ++; 
 
            while (position < qnameLength && xmlCharType.IsNCNameChar(qname[position])) {
                position ++; 
            }

            return qname.Substring(nameStart, position - nameStart);
        } 

        public static void ParseQualifiedName(string qname, out string prefix, out string local) { 
            Debug.Assert(qname != null); 
            prefix = string.Empty;
            local  = string.Empty; 
            int position    = 0;

            local = ParseNCName(qname, ref position);
 
            if (position < qname.Length) {
                if (qname[position] == ':') { 
                    position ++; 
                    prefix = local;
                    local  = ParseNCName(qname, ref position); 
                }

                if (position < qname.Length) {
                    throw XsltException.Create(Res.Xslt_InvalidQName, qname); 
                }
            } 
        } 

        public static bool ValidatePrefix(string prefix) { 
            if (prefix.Length == 0) {
                return false;
            }
            XmlCharType xmlCharType = XmlCharType.Instance; 
            if (! xmlCharType.IsStartNCNameChar(prefix[0])) {
                return false; 
            } 
            for (int i = 1; i < prefix.Length; i ++) {
                if (! xmlCharType.IsNCNameChar(prefix[i])) { 
                    return false;
                }
            }
            return true; 
        }
    } 
} 

// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
//------------------------------------------------------------------------------ 
// 
//     Copyright (c) Microsoft Corporation.  All rights reserved.
// 
// [....] 
//-----------------------------------------------------------------------------
 
namespace System.Xml.Xsl.XsltOld { 
    using Res = System.Xml.Utils.Res;
    using System; 
    using System.Diagnostics;
    using System.Xml;

    internal sealed class PrefixQName { 
        public string Prefix;
        public string Name; 
        public string Namespace; 

        internal void ClearPrefix() { 
            Prefix = string.Empty;
        }

        internal void SetQName(string qname) { 
            PrefixQName.ParseQualifiedName(qname, out Prefix, out Name);
        } 
 
        //
        // Parsing qualified names 
        //

        private static string ParseNCName(string qname, ref int position) {
            int qnameLength = qname.Length; 
            int nameStart = position;
            XmlCharType xmlCharType = XmlCharType.Instance; 
 
            if (
                qnameLength == position ||                           // Zero length ncname 
                ! xmlCharType.IsStartNCNameChar(qname[position])     // Start from invalid char
            ) {
                throw XsltException.Create(Res.Xslt_InvalidQName, qname);
            } 

            position ++; 
 
            while (position < qnameLength && xmlCharType.IsNCNameChar(qname[position])) {
                position ++; 
            }

            return qname.Substring(nameStart, position - nameStart);
        } 

        public static void ParseQualifiedName(string qname, out string prefix, out string local) { 
            Debug.Assert(qname != null); 
            prefix = string.Empty;
            local  = string.Empty; 
            int position    = 0;

            local = ParseNCName(qname, ref position);
 
            if (position < qname.Length) {
                if (qname[position] == ':') { 
                    position ++; 
                    prefix = local;
                    local  = ParseNCName(qname, ref position); 
                }

                if (position < qname.Length) {
                    throw XsltException.Create(Res.Xslt_InvalidQName, qname); 
                }
            } 
        } 

        public static bool ValidatePrefix(string prefix) { 
            if (prefix.Length == 0) {
                return false;
            }
            XmlCharType xmlCharType = XmlCharType.Instance; 
            if (! xmlCharType.IsStartNCNameChar(prefix[0])) {
                return false; 
            } 
            for (int i = 1; i < prefix.Length; i ++) {
                if (! xmlCharType.IsNCNameChar(prefix[i])) { 
                    return false;
                }
            }
            return true; 
        }
    } 
} 

// File provided for Reference Use Only by Microsoft Corporation (c) 2007.

                        

Link Menu

Network programming in C#, Network Programming in VB.NET, Network Programming in .NET
This book is available now!
Buy at Amazon US or
Buy at Amazon UK