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

Значение xs:ID обозначает один объект документа, а xs:IDREF ссылается на такой идентификатор. Xerces использует cvc-id.1 для отсутствующей цели и cvc-id.2 для повторного ID. Проверка зависит от отношений во всём XML, а не только от формы отдельных значений.

В первом примере существует A1, но ссылка указывает на отсутствующий A2. Замена ссылки на A1 восстанавливает связь. Во втором две записи получают A1; назначение второй записи A2 возвращает уникальность. При изменении настоящего ID необходимо также обновить все ссылки, которые должны обозначать именно эту запись.

1. Целевая запись отфильтрована, перенесена в другой документ или переименована без обновления ссылок. IDREF проверяет текущий XML, а не удалённую базу приложения.
2. Генератор выдал одинаковые ID разным объектам. При объединении фрагментов могут появиться коллизии, хотя каждый исходный фрагмент был корректен отдельно.
3. Поля не типизированы как xs:ID и xs:IDREF. Строковый атрибут с названием id не получает свойства схемной идентичности автоматически.

Соберите все типизированные ID и ссылки из полного документа, затем проверьте уникальность и отсутствующие цели отдельно. Установите исходные записи каждой коллизии перед повторной генерацией значений. Запускайте проверку после добавления всех целей: ссылка вперёд допустима, поэтому её появление раньше целевого элемента само по себе не является ошибкой.

Значения ID здесь являются идентификаторами, а не квалифицированными именами элементов. Изменение xmlns не создаёт A2 и не делает два A1 различными. Namespace важен, когда из-за квалификации атрибут не получает задуманный тип; сначала убедитесь, что объявление идентичности действительно применяется.

Измеренный 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)
