Add the DOM/tree editing primitives from the audit that the editor use case needs: - Attribute helpers: attributeValue(_:), setAttribute(_:_:) (update in place or append), removeAttribute(_:). - shallowCopy() copies a node alone, complementing the deep copy(). - precedes(_:) compares two nodes in document order (ancestor before descendant, earlier sibling before later; unrelated nodes compare false). - normalize() coalesces adjacent text children, drops empty text, and recurses into elements; CDATA is left intact. First-class namespace/DOCTYPE/entity-reference nodes (an invasive TreeNodeKind change) and cross-document adoption/ownerDocument (no document-identity model) are left for a follow-up. Closes #90 |
||
|---|---|---|
| .. | ||
| Attribute.swift | ||
| Element.swift | ||
| Node.swift | ||
| QualifiedName.swift | ||
| TreeNode.swift | ||
| TreeNodeConversion.swift | ||
| TreeNodeEditing.swift | ||
| TreeNodeMutation.swift | ||
| TreeNodeNavigation.swift | ||
| TreeNodeSpan.swift | ||