Xml 关于如何引用不同DTD的一个小问题

Xml 关于如何引用不同DTD的一个小问题,xml,dtd,Xml,Dtd,如果这个问题太简单,请原谅,因为我只是这个领域的初学者 我的客户使用一个名为“article.dtd”的dtd工作了很长一段时间。现在他们决定用更多的元素来扩展dtd,并将其重命名为“project.dtd”。由于添加到article.dtd的新元素只有几行,所以它们不希望每次创建project.dtd时都复制article.dtd中的所有内容 因此,我正在寻找一种方法,如果可以从新创建的project.dtd中引用article.dtd,并且在project.dtd中,我们只需要输入artic

如果这个问题太简单,请原谅,因为我只是这个领域的初学者

我的客户使用一个名为“article.dtd”的dtd工作了很长一段时间。现在他们决定用更多的元素来扩展dtd,并将其重命名为“project.dtd”。由于添加到article.dtd的新元素只有几行,所以它们不希望每次创建project.dtd时都复制article.dtd中的所有内容

因此,我正在寻找一种方法,如果可以从新创建的project.dtd中引用article.dtd,并且在project.dtd中,我们只需要输入article.dtd中不包含的行

仅供参考,以下是project.dtd中添加的四行:

<!ELEMENT project (title, keywords?, feature?, related-terms?, abstract?, classification?, contributor*, reviewer?, materials?, body, related-links?, questions?)>     
<!ATTLIST project %common-atts; %status-atts; %profile-atts;> 

<!ELEMENT abstract ((%para-elems;)+)>
<!ATTLIST abstract %common-atts;>


提前感谢您的帮助。

是的,您可以使用参数实体执行此操作。(看起来您已经使用了很多参数实体。)

您需要添加参数实体声明(
)和参数实体引用(
%entity name;

下面是一个使用实体名称
article dtd
的示例。这将是您完整的
项目。dtd

<!ENTITY % article-dtd SYSTEM "article.dtd">
%article-dtd;

<!ELEMENT project (title, keywords?, feature?, related-terms?, abstract?, classification?, contributor*, reviewer?, materials?, body, related-links?, questions?)>     
<!ATTLIST project %common-atts; %status-atts; %profile-atts;> 

<!ELEMENT abstract ((%para-elems;)+)>
<!ATTLIST abstract %common-atts;>

%第二条dtd;
我在实体声明中只使用了一个系统标识符,但您也可以添加一个公共标识符

例如:

<!ENTITY % article-dtd PUBLIC "-//SO//Stackoverflow Test//EN" "article.dtd">