# cvc-id.1 / cvc-id.2: порушення зв’язків ідентифікаторів

Значення xs:ID позначає один об’єкт документа, а xs:IDREF посилається на такий ідентифікатор. Xerces застосовує cvc-id.1 до відсутньої цілі та cvc-id.2 до повторного ID. Перевірка залежить від зв’язків у цілому документі, а не лише від форми окремих значень.

Перший зразок містить A1, але посилається на відсутній A2. Заміна посилання на A1 відновлює зв’язок. У другому два записи мають A1; призначення другому A2 повертає унікальність. Під час зміни справжнього ID також оновіть усі посилання, які мають позначати саме цей об’єкт.

1. Цільовий запис відфільтровано, перенесено до іншого документа або перейменовано без оновлення посилань. IDREF перевіряє поточний XML, а не віддалену базу.
2. Генератор призначив однакові ID різним записам. Об’єднання фрагментів може утворити колізії, хоча кожен початковий фрагмент окремо був правильним.
3. Поля не типізовано як xs:ID і xs:IDREF. Звичайний рядковий атрибут на ім’я id автоматично не отримує семантики схемної ідентичності.

Зберіть усі типізовані ID та посилання повного документа, потім окремо перевірте унікальність і відсутні цілі. Простежте початкові записи кожної колізії перед повторною генерацією значень. Запускайте перевірку після додавання всіх цілей: посилання вперед допустиме, тож поява посилання раніше за ціль сама по собі не доводить порушення.

Значення ID тут є ідентифікаторами, а не кваліфікованими назвами елементів. Зміна xmlns не створює A2 і не робить два A1 різними. Простори імен важливі, якщо кваліфікація заважає атрибуту отримати задуманий тип. Переконайтеся, що оголошення ідентичності справді застосоване до потрібного поля.

Виміряний libxml2/WASM пропускає відсутню ціль, тоді як Xerces, .NET і другий рушій XSDHub її відхиляють. Кнопки IDREF вибирають другий рушій із непозначеним дозволом надсилання. Завантаження нічого не відправляє: для запуску позначте згоду та натисніть Validate XML. Повторний ID локальна перевірка виявляє, як показано окремо.


## Unresolved IDREF / cvc-id.1 — Broken

```xml
<catalog>
  <item id="A1"/>
  <link ref="A2"/>
</catalog>
```

```xml
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:element name="catalog">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="item" maxOccurs="unbounded">
          <xs:complexType>
            <xs:attribute name="id" type="xs:ID" use="required"/>
          </xs:complexType>
        </xs:element>
        <xs:element name="link" minOccurs="0">
          <xs:complexType>
            <xs:attribute name="ref" type="xs:IDREF" use="required"/>
          </xs:complexType>
        </xs:element>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
</xs:schema>
```

[Open broken pair](https://xsdhub.com/?example=parser-idref&variant=bad#workbench)

## Unresolved IDREF / cvc-id.1 — Corrected

```xml
<catalog>
  <item id="A1"/>
  <link ref="A1"/>
</catalog>
```

```xml
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:element name="catalog">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="item" maxOccurs="unbounded">
          <xs:complexType>
            <xs:attribute name="id" type="xs:ID" use="required"/>
          </xs:complexType>
        </xs:element>
        <xs:element name="link" minOccurs="0">
          <xs:complexType>
            <xs:attribute name="ref" type="xs:IDREF" use="required"/>
          </xs:complexType>
        </xs:element>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
</xs:schema>
```

[Open corrected pair](https://xsdhub.com/?example=parser-idref&variant=good#workbench)

### Apache Xerces-J 2.12.2

```text
cvc-id.1: There is no ID/IDREF binding for IDREF 'A2'.
```

Corrected: PASS.

### .NET 8.0.33 · System.Xml.Schema

```text
Reference to undeclared ID is 'A2'.
```

Corrected: PASS.

### XSDHub libxml2/WASM 0.7.2

```text
PASS: no validation diagnostic.
```

Corrected: PASS.

### XSDHub xmlschema 4.3.1 · XSD 1.0

```text
IDREF 'A2' not found in XML document
```

Corrected: PASS.

## Duplicate ID / cvc-id.2 — Broken

```xml
<catalog>
  <item id="A1"/>
  <item id="A1"/>
</catalog>
```

```xml
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:element name="catalog">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="item" maxOccurs="unbounded">
          <xs:complexType>
            <xs:attribute name="id" type="xs:ID" use="required"/>
          </xs:complexType>
        </xs:element>
        <xs:element name="link" minOccurs="0">
          <xs:complexType>
            <xs:attribute name="ref" type="xs:IDREF" use="required"/>
          </xs:complexType>
        </xs:element>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
</xs:schema>
```

[Open broken pair](https://xsdhub.com/?example=parser-id-duplicate&variant=bad#workbench)

## Duplicate ID / cvc-id.2 — Corrected

```xml
<catalog>
  <item id="A1"/>
  <item id="A2"/>
</catalog>
```

```xml
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:element name="catalog">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="item" maxOccurs="unbounded">
          <xs:complexType>
            <xs:attribute name="id" type="xs:ID" use="required"/>
          </xs:complexType>
        </xs:element>
        <xs:element name="link" minOccurs="0">
          <xs:complexType>
            <xs:attribute name="ref" type="xs:IDREF" use="required"/>
          </xs:complexType>
        </xs:element>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
</xs:schema>
```

[Open corrected pair](https://xsdhub.com/?example=parser-id-duplicate&variant=good#workbench)

### Apache Xerces-J 2.12.2

```text
cvc-id.2: There are multiple occurrences of ID value 'A1'.
cvc-attribute.3: The value 'A1' of attribute 'id' on element 'item' is not valid with respect to its type, 'ID'.
```

Corrected: PASS.

### .NET 8.0.33 · System.Xml.Schema

```text
'A1' is already used as an ID.
```

Corrected: PASS.

### XSDHub libxml2/WASM 0.7.2

```text
Element 'item', attribute 'id': 'A1' is not a valid value of the atomic type 'xs:ID'.
```

Corrected: PASS.

### XSDHub xmlschema 4.3.1 · XSD 1.0

```text
attribute id='A1': duplicated xs:ID value 'A1'
```

Corrected: PASS.

Saxon EE was not available; no measured Saxon wording is claimed.

[All parser codes](https://xsdhub.com/learn#parser-error-codes)
[Download engine evidence](https://xsdhub.com/parser-error-examples/engine-evidence.json)
