<?xml version="1.0" encoding="UTF-8"?>
<!--

Documentation for LCL (Lazarus Component Library) and LazUtils (Lazarus 
Utilities) are published under the Creative Commons Attribution-ShareAlike 4.0 
International public license.

https://creativecommons.org/licenses/by-sa/4.0/legalcode.txt
https://gitlab.com/freepascal.org/lazarus/lazarus/-/blob/main/docs/cc-by-sa-4-0.txt

Copyright (c) 1997-2025, by the Lazarus Development Team.

-->
<fpdoc-descriptions>
<package name="lazutils">
<!--
====================================================================
laz2_xmlutils
====================================================================
-->
<module name="laz2_xmlutils">
<short>
XML utility routines with support for UTF-8 encoding.
</short>
<descr>
<p>
<file>laz2_xmlutils.pas</file> contains XML utility routines with support for 
the UTF-8 encoding. It is copied from code in the FreePascal Free Component 
Library (FCL) and modified to provide UTF-8 support.
</p>
<p>
<file>laz2_xmlutils.pas</file> is part of <file>LazUtils</file> package.
</p>
</descr>

<!-- unresolved external refrences -->
<element name="SysUtils"/>
<element name="Classes"/>
<element name="LazUTF8"/>

<element name="TXMLUtilString">
<short/>
<descr>
TXMLUtilString is an alias to the AnsiString type.
</descr>
<seealso/>
</element>

<element name="TXMLUtilChar">
<short/>
<descr>
TXMLUtilChar is an alias to the Char type.
</descr>
<seealso/>
</element>

<element name="PXMLUtilChar">
<short/>
<descr>
PXMLUtilChar is an alias to the PChar type.
</descr>
<seealso/>
</element>

<element name="PXMLUtilString">
<short/>
<descr>
PXMLUtilString is a Pointer to the TXMLUtilString type.
</descr>
<seealso/>
</element>

<element name="IsXmlName">
<short>
Determines if the specified value contains a valid XML element name.
</short>
<descr>
<p>
<var>IsXmlName</var> is an overloaded <var>Boolean</var> function used to 
determine if <var>Value</var> contains a valid XML element name. It ensures 
that the name is valid using the <b>Name</b> production in the XML 
specifications.
</p>
<p>
In XML 1.0, the valid characters allowed in a name was restricted. It used 
the principle of "that which is not expressly permitted is prohibited."
</p>
<p>
The Xml11 flag indicates if the XML 1.1 element naming conventions are 
allowed. When set to True, the XML 1.1 naming conventions are used. XML 1.1 
allows almost all Unicode characters in any position in the name except the 
NameStart character. When to False (the default value), XML 1.0 naming 
conventions are used.
</p>
<p>
<b>Extensible Markup Language (XML) 1.0 (Fifth Edition)</b>
<url href="https://www.w3.org/TR/REC-xml/#NT-Name"><b>Names and 
Tokens</b></url>
</p>
<p>
<b>Extensible Markup Language (XML) 1.1 (Second Edition)</b>
<url href="https://www.w3.org/TR/2006/REC-xml11-20060816/#NT-Name"><b>Names 
and Tokens</b></url>
</p>
<p>
The overloaded variants allow Value to be specified as a TXMLUtilString 
(AnsiString) or a PXMLUtilChar (PChar) type.
</p>
<p>
The return value is <b>True</b> when Value is a valid XML element name for 
the indicated specification level.
</p>
</descr>
<seealso/>
</element>
<element name="IsXmlName.Result">
<short>True when the value is a valid XML element name.</short>
</element>
<element name="IsXmlName.Value">
<short>Value examined in the routine.</short>
</element>
<element name="IsXmlName.Xml11">
<short>True when XML 1.1 naming conventions used in the document.</short>
</element>
<element name="IsXmlName.Len">
<short>Number of characters in the Pointer.</short>
</element>

<element name="IsXmlNames">
<short/>
<descr/>
<seealso/>
</element>
<element name="IsXmlNames.Result">
<short/>
</element>
<element name="IsXmlNames.Value">
<short/>
</element>
<element name="IsXmlNames.Xml11">
<short/>
</element>

<element name="IsXmlNmToken">
<short/>
<descr/>
<seealso/>
</element>
<element name="IsXmlNmToken.Result">
<short/>
</element>
<element name="IsXmlNmToken.Value">
<short/>
</element>
<element name="IsXmlNmToken.Xml11">
<short/>
</element>

<element name="IsXmlNmTokens">
<short/>
<descr/>
<seealso/>
</element>
<element name="IsXmlNmTokens.Result">
<short/>
</element>
<element name="IsXmlNmTokens.Value">
<short/>
</element>
<element name="IsXmlNmTokens.Xml11">
<short/>
</element>

<element name="IsValidXmlEncoding">
<short>Determines if the specified value is a valid XML encoding name.</short>
<descr>
<p>
IsValidXmlEncoding is a Boolean function used to determine if the value 
specified in Value is a valid XML encoding name. The encoding name is used in 
the XML declaration for a document. For instance:
</p>
<code>&lt;?xml encoding='UTF-8'?&gt;</code>
<p>
or:
</p>
<code>&lt;?xml encoding='EUC-JP'?&gt;</code>
</descr>
<seealso/>
</element>
<element name="IsValidXmlEncoding.Result">
<short>
True the value satisfied the Name production in the XML specification.
</short>
</element>
<element name="IsValidXmlEncoding.Value">
<short>Value examined for a valid encoding identifier.</short>
</element>

<element name="Xml11NamePages">
<short/>
<descr/>
<seealso/>
</element>
<element name="Xml11NamePages.Result">
<short/>
</element>

<element name="NormalizeSpaces">
<short>Removes duplicate spaces in the specified value.</short>
<descr/>
<seealso/>
</element>
<element name="NormalizeSpaces.Value">
<short>Value updated to remove duplicate spaces in the routine.</short>
</element>

<element name="IsXmlWhiteSpace">
<short>
Determines if the specified value is an XML Whitespace character.
</short>
<descr/>
<seealso/>
</element>
<element name="IsXmlWhiteSpace.Result">
<short>True when the value is an XML Whitespace character.</short>
</element>
<element name="IsXmlWhiteSpace.c">
<short>Value examined in the routine.</short>
</element>

<element name="Hash">
<short/>
<descr/>
<seealso/>
</element>
<element name="Hash.Result">
<short/>
</element>
<element name="Hash.InitValue">
<short/>
</element>
<element name="Hash.Key">
<short/>
</element>
<element name="Hash.KeyLen">
<short/>
</element>

<element name="XUStrLIComp">
<short/>
<descr>
<remark>
Beware. Works in the ASCII character range only.
</remark>
</descr>
<seealso/>
</element>
<element name="XUStrLIComp.Result">
<short/>
</element>
<element name="XUStrLIComp.S1">
<short/>
</element>
<element name="XUStrLIComp.S2">
<short/>
</element>
<element name="XUStrLIComp.Len">
<short/>
</element>

<element name="TranslateUTF8Chars">
<short/>
<descr/>
<seealso/>
</element>
<element name="TranslateUTF8Chars.s">
<short/>
</element>
<element name="TranslateUTF8Chars.SrcChars">
<short/>
</element>
<element name="TranslateUTF8Chars.DstChars">
<short/>
</element>

<element name="PtrInt">
<short/>
<descr/>
<seealso/>
</element>

<element name="TFPList">
<short/>
<descr/>
<seealso/>
</element>

<element name="PPHashItem">
<short/>
<descr/>
<seealso/>
</element>

<element name="PHashItem">
<short/>
<descr/>
<seealso/>
</element>

<element name="THashItem">
<short/>
<descr/>
<seealso/>
</element>

<element name="THashItem.Key">
<short/>
<descr/>
<seealso/>
</element>

<element name="THashItem.HashValue">
<short/>
<descr/>
<seealso/>
</element>

<element name="THashItem.Next">
<short/>
<descr/>
<seealso/>
</element>

<element name="THashItem.Data">
<short/>
<descr/>
<seealso/>
</element>

<element name="THashItemArray">
<short/>
<descr/>
<seealso/>
</element>

<element name="PHashItemArray">
<short/>
<descr/>
<seealso/>
</element>

<element name="THashForEach">
<short/>
<descr/>
<seealso/>
</element>
<element name="THashForEach.Result">
<short/>
</element>
<element name="THashForEach.Entry">
<short/>
</element>
<element name="THashForEach.arg">
<short/>
</element>

<element name="THashTable">
<short>A simple hash table with TXMLUtilString keys.</short>
<descr/>
<seealso/>
</element>

<element name="THashTable.FCount">
<short/>
<descr/>
<seealso/>
</element>

<element name="THashTable.FBucketCount">
<short/>
<descr/>
<seealso/>
</element>

<element name="THashTable.FBucket">
<short/>
<descr/>
<seealso/>
</element>

<element name="THashTable.FOwnsObjects">
<short/>
<descr/>
<seealso/>
</element>

<element name="THashTable.Lookup">
<short/>
<descr/>
<seealso/>
</element>
<element name="THashTable.Lookup.Result">
<short/>
</element>
<element name="THashTable.Lookup.Key">
<short/>
</element>
<element name="THashTable.Lookup.KeyLength">
<short/>
</element>
<element name="THashTable.Lookup.Found">
<short/>
</element>
<element name="THashTable.Lookup.CanCreate">
<short/>
</element>

<element name="THashTable.Resize">
<short/>
<descr/>
<seealso/>
</element>
<element name="THashTable.Resize.NewCapacity">
<short/>
</element>

<element name="THashTable.Create">
<short/>
<descr/>
<seealso/>
</element>
<element name="THashTable.Create.InitSize">
<short/>
</element>
<element name="THashTable.Create.OwnObjects">
<short/>
</element>

<element name="THashTable.Destroy">
<short/>
<descr/>
<seealso/>
</element>

<element name="THashTable.Clear">
<short/>
<descr/>
<seealso/>
</element>

<element name="THashTable.Find">
<short/>
<descr/>
<seealso/>
</element>
<element name="THashTable.Find.Result">
<short/>
</element>
<element name="THashTable.Find.Key">
<short/>
</element>
<element name="THashTable.Find.KeyLen">
<short/>
</element>

<element name="THashTable.FindOrAdd">
<short/>
<descr/>
<seealso/>
</element>
<element name="THashTable.FindOrAdd.Result">
<short/>
</element>
<element name="THashTable.FindOrAdd.Key">
<short/>
</element>
<element name="THashTable.FindOrAdd.KeyLen">
<short/>
</element>
<element name="THashTable.FindOrAdd.Found">
<short/>
</element>

<element name="THashTable.Get">
<short/>
<descr/>
<seealso/>
</element>
<element name="THashTable.Get.Result">
<short/>
</element>
<element name="THashTable.Get.Key">
<short/>
</element>
<element name="THashTable.Get.KeyLen">
<short/>
</element>

<element name="THashTable.Remove">
<short/>
<descr/>
<seealso/>
</element>
<element name="THashTable.Remove.Result">
<short/>
</element>
<element name="THashTable.Remove.Entry">
<short/>
</element>

<element name="THashTable.RemoveData">
<short/>
<descr/>
<seealso/>
</element>
<element name="THashTable.RemoveData.Result">
<short/>
</element>
<element name="THashTable.RemoveData.aData">
<short/>
</element>

<element name="THashTable.ForEach">
<short/>
<descr/>
<seealso/>
</element>
<element name="THashTable.ForEach.proc">
<short/>
</element>
<element name="THashTable.ForEach.arg">
<short/>
</element>

<element name="THashTable.Count">
<short/>
<descr/>
<seealso/>
</element>

<element name="TExpHashEntry">
<short>
Another hash table used to detect duplicate namespaced attributes without 
memory allocations.
</short>
<descr/>
<seealso/>
</element>

<element name="TExpHashEntry.rev">
<short/>
<descr/>
<seealso/>
</element>

<element name="TExpHashEntry.hash">
<short/>
<descr/>
<seealso/>
</element>

<element name="TExpHashEntry.uriPtr">
<short/>
<descr/>
<seealso/>
</element>

<element name="TExpHashEntry.lname">
<short/>
<descr/>
<seealso/>
</element>

<element name="TExpHashEntry.lnameLen">
<short/>
<descr/>
<seealso/>
</element>

<element name="TExpHashEntryArray">
<short/>
<descr/>
<seealso/>
</element>

<element name="PExpHashEntryArray">
<short/>
<descr/>
<seealso/>
</element>

<element name="TDblHashArray">
<short/>
<descr/>
<seealso/>
</element>

<element name="TDblHashArray.FSizeLog">
<short/>
<descr/>
<seealso/>
</element>

<element name="TDblHashArray.FRevision">
<short/>
<descr/>
<seealso/>
</element>

<element name="TDblHashArray.FData">
<short/>
<descr/>
<seealso/>
</element>

<element name="TDblHashArray.Init">
<short/>
<descr/>
<seealso/>
</element>
<element name="TDblHashArray.Init.NumSlots">
<short/>
</element>

<element name="TDblHashArray.Locate">
<short/>
<descr/>
<seealso/>
</element>
<element name="TDblHashArray.Locate.Result">
<short/>
</element>
<element name="TDblHashArray.Locate.uri">
<short/>
</element>
<element name="TDblHashArray.Locate.localName">
<short/>
</element>
<element name="TDblHashArray.Locate.localLength">
<short/>
</element>

<element name="TDblHashArray.Destroy">
<short/>
<descr/>
<seealso/>
</element>

<element name="TBinding">
<short/>
<descr/>
<seealso/>
</element>

<element name="TBinding.uri">
<short/>
<descr/>
<seealso/>
</element>

<element name="TBinding.next">
<short/>
<descr/>
<seealso/>
</element>

<element name="TBinding.prevPrefixBinding">
<short/>
<descr/>
<seealso/>
</element>

<element name="TBinding.Prefix">
<short/>
<descr/>
<seealso/>
</element>

<element name="TAttributeAction">
<short/>
<descr/>
<seealso/>
</element>
<element name="TAttributeAction.aaUnchanged">
<short/>
</element>
<element name="TAttributeAction.aaPrefix">
<short>Override the prefix only.</short>
</element>
<element name="TAttributeAction.aaBoth">
<short>Override the prefix and emit a namespace definition.</short>
</element>

<element name="TNSSupport">
<short/>
<descr/>
<seealso/>
</element>

<element name="TNSSupport.FNesting">
<short/>
<descr/>
<seealso/>
</element>

<element name="TNSSupport.FPrefixSeqNo">
<short/>
<descr/>
<seealso/>
</element>

<element name="TNSSupport.FFreeBindings">
<short/>
<descr/>
<seealso/>
</element>

<element name="TNSSupport.FBindings">
<short/>
<descr/>
<seealso/>
</element>

<element name="TNSSupport.FBindingStack">
<short/>
<descr/>
<seealso/>
</element>

<element name="TNSSupport.FPrefixes">
<short/>
<descr/>
<seealso/>
</element>

<element name="TNSSupport.FDefaultPrefix">
<short/>
<descr/>
<seealso/>
</element>

<element name="TNSSupport.Create">
<short/>
<descr/>
<seealso/>
</element>

<element name="TNSSupport.Destroy">
<short/>
<descr/>
<seealso/>
</element>

<element name="TNSSupport.DefineBinding">
<short/>
<descr/>
<seealso/>
</element>
<element name="TNSSupport.DefineBinding.Prefix">
<short/>
</element>
<element name="TNSSupport.DefineBinding.nsURI">
<short/>
</element>
<element name="TNSSupport.DefineBinding.Binding">
<short/>
</element>

<element name="TNSSupport.CheckAttribute">
<short/>
<descr/>
<seealso/>
</element>
<element name="TNSSupport.CheckAttribute.Result">
<short/>
</element>
<element name="TNSSupport.CheckAttribute.Prefix">
<short/>
</element>
<element name="TNSSupport.CheckAttribute.nsURI">
<short/>
</element>
<element name="TNSSupport.CheckAttribute.Binding">
<short/>
</element>

<element name="TNSSupport.IsPrefixBound">
<short/>
<descr/>
<seealso/>
</element>
<element name="TNSSupport.IsPrefixBound.Result">
<short/>
</element>
<element name="TNSSupport.IsPrefixBound.P">
<short/>
</element>
<element name="TNSSupport.IsPrefixBound.Len">
<short/>
</element>
<element name="TNSSupport.IsPrefixBound.Prefix">
<short/>
</element>

<element name="TNSSupport.GetPrefix">
<short/>
<descr/>
<seealso/>
</element>
<element name="TNSSupport.GetPrefix.Result">
<short/>
</element>
<element name="TNSSupport.GetPrefix.P">
<short/>
</element>
<element name="TNSSupport.GetPrefix.Len">
<short/>
</element>

<element name="TNSSupport.BindPrefix">
<short/>
<descr/>
<seealso/>
</element>
<element name="TNSSupport.BindPrefix.Result">
<short/>
</element>
<element name="TNSSupport.BindPrefix.nsURI">
<short/>
</element>
<element name="TNSSupport.BindPrefix.aPrefix">
<short/>
</element>

<element name="TNSSupport.DefaultNSBinding">
<short/>
<descr/>
<seealso/>
</element>
<element name="TNSSupport.DefaultNSBinding.Result">
<short/>
</element>

<element name="TNSSupport.StartElement">
<short/>
<descr/>
<seealso/>
</element>

<element name="TNSSupport.EndElement">
<short/>
<descr/>
<seealso/>
</element>

<element name="TSetOfByte">
<short/>
<descr/>
<seealso/>
</element>

<element name="ns_ASCII">
<short/>
<descr/>
<seealso/>
</element>

<element name="ns_0200">
<short/>
<descr/>
<seealso/>
</element>

<element name="ns_0300">
<short/>
<descr/>
<seealso/>
</element>

<element name="ns_0400">
<short/>
<descr/>
<seealso/>
</element>

<element name="ns_0500">
<short/>
<descr/>
<seealso/>
</element>

<element name="ns_0600">
<short/>
<descr/>
<seealso/>
</element>

<element name="ns_0900">
<short/>
<descr/>
<seealso/>
</element>

<element name="ns_0A00">
<short/>
<descr/>
<seealso/>
</element>

<element name="ns_0B00">
<short/>
<descr/>
<seealso/>
</element>

<element name="ns_0C00">
<short/>
<descr/>
<seealso/>
</element>

<element name="ns_0D00">
<short/>
<descr/>
<seealso/>
</element>

<element name="ns_0E00">
<short/>
<descr/>
<seealso/>
</element>

<element name="ns_0F00">
<short/>
<descr/>
<seealso/>
</element>

<element name="ns_3000">
<short/>
<descr/>
<seealso/>
</element>

<element name="namingBitmap">
<short/>
<descr/>
<seealso/>
</element>

<element name="Xml11HighPages">
<short/>
<descr/>
<seealso/>
</element>

<element name="NamePages">
<short/>
<descr/>
<seealso/>
</element>

</module>
<!-- laz2_xmlutils -->
</package>
</fpdoc-descriptions>
