整个问题都在标题中:是否可以将特定的 IDREF 分配给 DTD 中的特定 ID?我很确定这是不可能的,但我只想在这里确认一下:P
例如,我有一个带有 ID 类型属性的 client 和 worker 元素,以及带有两个属性的“order”元素,这两个属性应该指的是客户端发出订单和接收订单的工人。来自 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>
代码正常工作,验证时没有错误,我必须为工人和客户使用 ID 值,并且可以在任何工人的“下属”参数中添加工人的 ID。
但是,我也可以将客户的 ID 写为从属,或者在订单元素的情况下,我可以将客户的 ID 值用于“wrkr_id”,将工人的 ID 用于“cl_id”。有没有办法限制 IDREF 只接受一种 ID?或者也许有一种方法可以限制 ID 属性,使工人的 ID 以例如“w”开头,而客户的 ID 以例如“c”开头,这至少可以部分解决这个问题?
请不要建议 DTD 以外的其他解决方案。如果可能,我想在 DTD 中完成,因为这是我课程的作业,如果可能,必须在 DTD 中完成。
谢谢!