весь вопрос в заголовке: можно ли присвоить конкретный IDREF конкретному ID в DTD? Я почти уверен, что это невозможно, но я просто хочу подтвердить это здесь: P
Например. У меня есть клиентский и рабочий элементы с атрибутами типа ID и элемент «заказ» с двумя атрибутами, которые должны относиться к клиенту, делающему заказ, и к работнику, который получает заказ. Упрощенный код из DTD:
<!ELEMENT worker (name, salary, employmDate)>
<!ATTLIST worker worker_id ID #REQUIRED subordinates IDREFS #IMPLIED>
<!ELEMENT client (name)>
<!ATTLIST client client_id ID #REQUIRED>
<!ELEMENT order (price, date)>
<!ATTLIST order cl_id IDREF #REQUIRED wrkr_id IDREF #REQUIRED>
Код работает правильно, при проверке ошибок нет, я должен использовать значения идентификаторов для воркеров и клиентов и могу добавить идентификаторы воркеров в аргумент «подчиненные» для любого воркера.
Однако я также могу написать идентификатор клиента в качестве подчиненного или, в случае элемента заказа, я могу использовать значение идентификатора клиента для «wrkr_id» и идентификатор работника для «cl_id». Есть ли способ заставить IDREF принимать только идентификаторы одного типа? Или, может быть, есть способ наложить ограничения на атрибуты идентификатора, чтобы идентификаторы рабочих начинались, например, с. "w" и идентификаторы клиентов начинаются, например, с. "c", который решил бы эту проблему хотя бы частично?
Пожалуйста, воздержитесь от предложений других решений, кроме DTD. Если это возможно, я хочу сделать это в DTD, так как это задание для моего курса, и, если возможно, оно должно быть выполнено в DTD.
Спасибо!