Bob has pointed out to me that because Targetid attributes point outside of the documents that contain them, Targetid needs to be CDATA, not IDREF. So the corrected proposed ATTLIST for Olink will look like this instead: <!ATTLIST olink targetdoc CDATA #IMPLIED targetid CDATA #IMPLIED targetdocent ENTITY #IMPLIED linkmode IDREF #IMPLIED localinfo CDATA #IMPLIED type CDATA #IMPLIED %common.attrib; %olink.role.attrib; %local.olink.attrib; >