如何使用 IDREF

How to use IDREF

我正在编写一份 XML 文档并尝试说明其规范。

我认为我可以指定一个标签的属性可以限制为另一个标签的属性,我认为这可以使用 !ATTLISTIDREF 来完成,但是我不太确定。示例:

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE CUSTOM_RIBBON
[
    <!ELEMENT CUSTOM_RIBBON (VERSION, ICONS, SCRIPT+, CMD_ID+, CATEGORY)>
    <!ELEMENT ICONS (#CDATA)>
    <!ELEMENT SCRIPT (#CDATA)>
    <!ELEMENT CMD_ID (SPEC)>
    <!ELEMENT CATEGORY (PANEL)>
    <!ELEMENT PANEL (BUTTON, GROUP, SEPARATOR)+>
    <!ELEMENT GROUP (BUTTON, SEPARATOR)+>
    <!ELEMENT BUTTON EMPTY>
    <!ATTLIST BUTTON name IDREF #REQUIRED>

    <!ELEMENT SEPARATOR EMPTY>

    <!ELEMENT VERSION EMPTY>
    <!ATTLIST VERSION value CDATA #REQUIRED>
]>
<CUSTOM_RIBBON>
    <SCRIPT name="button1-script">
        // some script here
        messagebox("AHHH!");
    </SCRIPT>

    <CMD_ID name="button1">
        <SPEC pressed="both" script="button1-script" text="boo!" />
    </CMD>

    <CATEGORY name="Foo">
        <PANEL name="Bar">
            <BUTTON name="button1" />
        </PANEL>
    </CATEGORY>
<CUSTOM_RIBBON>

我想说明:

我怎样才能做到这一点?

看来这不能用 DTD 来完成。我将不得不使用 XSD 代替。