Shared XFDF namespace parsing

The shared XFDF XML parser resolves inherited default namespaces and declared prefixes, so Adobe XFDF elements retain the same meaning when an XML producer uses qualified names

Local destination import accepts qualified Adobe Dest, GoTo and destination-mode elements, and rejects foreign bindings, inconsistent namespace changes, invalid containers and repeated destination data before creating an annotation

The original loaded-document codec continues to accept its unqualified legacy XML profile; native transactions retain their stricter Adobe XFDF namespace requirement

Names and serialisation

THPDFXFDFNode retains the original QualifiedName for serialisation and exposes the resolved NamespaceURI, whilst Name provides the local name for recognised Adobe or unqualified elements

Foreign qualified element names remain qualified in Name so that a shared codec cannot accidentally treat them as Adobe vocabulary; consumers must inspect NamespaceURI when handling foreign content

Namespace declarations needed by detached serialized content are retained, and rich-text body content preserves mixed text order and namespace bindings

Only namespace bindings actually needed from outside a foreign subtree are added to its preserved XML; nested foreign nodes do not retain duplicate complete subtrees

The shared parser limits the cumulative preserved XML and added declarations to four times the input byte length plus 4096 UTF-16 code units, raising EHPDFXFDFLimitError when namespace expansion exceeds that working bound

Attribute and prefix checks

Repeated lexical attributes and repeated expanded attribute names are rejected instead of applying the last value; default namespaces apply to element names, whilst unprefixed attribute names remain unqualified

Declared prefixes and reserved xml or xmlns bindings follow the namespace constraints in W3C Namespaces in XML 1.0, Third Edition; namespace URI comparison is case-sensitive

This remains the library's bounded XFDF vocabulary and compatibility profile, without a claim of general XML schema validation

Annotation destinations · Mapped annotation interchange