File: System\Xml\Xsl\Runtime\XmlCollation.Unix.cs
Web Access
Project: src\src\libraries\System.Private.Xml\src\System.Private.Xml.csproj (System.Private.Xml)
// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.
 
using System.Globalization;
 
namespace System.Xml.Xsl.Runtime
{
    public sealed partial class XmlCollation
    {
        /// <summary>
        /// Create a sort key that can be compared quickly with other keys.
        /// </summary>
        internal XmlSortKey CreateSortKey(string s)
        {
            SortKey sortKey;
            byte[] bytesKey;
 
            if (UpperFirst)
            {
                // TODO: Support upper case first on Linux
                // https://github.com/dotnet/runtime/issues/19462
                // https://github.com/dotnet/runtime/issues/19170
                throw new PlatformNotSupportedException(SR.Xslt_UpperCaseFirstNotSupported);
            }
 
            sortKey = Culture.CompareInfo.GetSortKey(s, _compops);
 
            // Create an XmlStringSortKey using the SortKey if possible
#if DEBUG
            // In debug-only code, test other code path more frequently
            if (!UpperFirst && DescendingOrder)
                return new XmlStringSortKey(sortKey, DescendingOrder);
#else
            if (!UpperFirst)
                return new XmlStringSortKey(sortKey, DescendingOrder);
#endif
 
            // Get byte buffer from SortKey and modify it
            bytesKey = sortKey.KeyData;
 
            return new XmlStringSortKey(bytesKey, DescendingOrder);
        }
    }
}