【问题标题】:Can I reference an external DTD for the structure of an ELEMENT in a DTD?我可以为 DTD 中的 ELEMENT 结构引用外部 DTD 吗?
【发布时间】:2011-09-09 16:52:54
【问题描述】:

我能否定义一个 DTD,使其中的元素在外部 DTD 中定义其结构? 我的意思类似于以下内容(这是一个我知道在几个方面无效的示例,但希望它能让您了解我在寻找什么):

<?xml version="1.0" encoding="UTF-8"?>
<!ENTITY % MessageHdr-DTD SYSTEM "./messagehdr.dtd">
<!ENTITY % MessageBody-DTD SYSTEM "./messagebody.dtd">
<!ELEMENT Message (MessageHdr, MessageBody)>
<!ELEMENT MessageHdr (MessageHdr-DTD)>
<!ELEMENT MessageBody (MessageBody-DTD)>

这里的尝试是表示一个 Message 需要一个 MessageHdr 和一个 MessageBody,但这两个元素是在外部引用的 DTD 中定义的。

【问题讨论】:

    标签: xml dtd


    【解决方案1】:

    是的,您的示例非常接近。您只需要引用parameter entities。这是 3 个 DTD 和一个 XML 实例的示例。我只将#PCDATA 用于MessageHdrMessageBody,但这可以是您定义的任何结构。

    message.dtd

    <!ENTITY % MessageHdr-DTD SYSTEM "./messagehdr.dtd">
    <!ENTITY % MessageBody-DTD SYSTEM "./messagebody.dtd">
    %MessageHdr-DTD;
    %MessageBody-DTD;
    <!ELEMENT Message (MessageHdr, MessageBody)>
    

    messagehdr.dtd

    <!ELEMENT MessageHdr (#PCDATA)>
    

    messagebody.dtd

    <!ELEMENT MessageBody (#PCDATA)>
    

    message.xml

    <!DOCTYPE Message SYSTEM "message.dtd">
    <Message>
      <MessageHdr>header info</MessageHdr>
      <MessageBody>body info</MessageBody>
    </Message>
    

    【讨论】:

    • 优秀...正是我正在寻找的答案。我试过了,它完美地验证了。谢谢。
    猜你喜欢
    • 2021-01-05
    • 2011-07-24
    • 1970-01-01
    • 1970-01-01
    • 2012-12-31
    • 2018-06-17
    • 2016-04-01
    相关资源
    最近更新 更多