我可以定义一个 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)>
这里的尝试是表示消息需要 MessageHdr 和 MessageBody,但这两个元素是在外部引用的 DTD 中定义的。
是的,你的例子非常接近。您只需要参考参数实体 http://www.w3.org/TR/xml11/#dt-PE。下面是 3 个 DTD 和一个 XML 实例的示例。我只用过#PCDATA
for MessageHdr
and MessageBody
,但这可以是您定义的任何结构。
消息.dtd
<!ENTITY % MessageHdr-DTD SYSTEM "./messagehdr.dtd">
<!ENTITY % MessageBody-DTD SYSTEM "./messagebody.dtd">
%MessageHdr-DTD;
%MessageBody-DTD;
<!ELEMENT Message (MessageHdr, MessageBody)>
消息hdr.dtd
<!ELEMENT MessageHdr (#PCDATA)>
消息体.dtd
<!ELEMENT MessageBody (#PCDATA)>
消息.xml
<!DOCTYPE Message SYSTEM "message.dtd">
<Message>
<MessageHdr>header info</MessageHdr>
<MessageBody>body info</MessageBody>
</Message>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)