# Validate XML

### Overview

The **XML Validation Component** verifies whether an input XML string is well-formed and conforms to certain validation rules. It supports options for boolean attributes and unpaired tags, ensuring that the XML structure meets expected standards.

### Usage

This component takes an XML string as input and checks for syntax errors, invalid structures, and unsupported tags. If the XML is valid, it outputs a confirmation; otherwise, it returns error details.

#### Input Ports

| Port | Description                           |
| ---- | ------------------------------------- |
| `in` | Accepts an XML string for validation. |

**Input Properties**

| Property                 | Type      | Description                                                                   |
| ------------------------ | --------- | ----------------------------------------------------------------------------- |
| `xml`                    | `string`  | XML content to validate.                                                      |
| `allowBooleanAttributes` | `boolean` | If `true`, allows boolean attributes (e.g., `<input checked>`).               |
| `unpairedTags`           | `string`  | Comma-separated list of tags that don't require closing pairs (e.g., `<br>`). |

#### Output Ports

| Port  | Description                  |
| ----- | ---------------------------- |
| `out` | Provides validation results. |

**Output Properties**

| Property   | Type      | Description                                |
| ---------- | --------- | ------------------------------------------ |
| `isValid`  | `boolean` | `true` if XML is valid, `false` otherwise. |
| `err.code` | `string`  | Error code if XML is invalid.              |
| `err.msg`  | `string`  | Error message detailing the issue.         |
| `err.line` | `number`  | Line number where the error occurred.      |
| `err.col`  | `number`  | Column number where the error occurred.    |

#### Processing Logic

1. **Parse XML Input**: Accepts an XML string and applies validation rules.
2. **Apply Boolean Attribute Handling**: Determines whether attributes can be boolean.
3. **Check Unpaired Tags**: Validates unpaired tags against the provided list.
4. **Return Validation Result**: If valid, sends `isValid: true`; if invalid, returns an error with details.

### Notes

* **Boolean Attribute Support**: Useful for HTML-like XML where some attributes don’t require values.
* **Custom Unpaired Tags**: Enables validation for tags that don’t have closing counterparts.
* **Detailed Error Reporting**: Helps identify structural issues with precise error messages and locations.

This component ensures XML correctness, aiding in proper document parsing and integration workflows.
