validate.php:
<?php
header("Content-Type:text/html;charset=utf-8");
$dom = new DOMDocument('1.0','utf-8');
//$dom->validateOnParse = true; //(第一种方法通过属性验证)强制加载外部DTD(是否通过DTD文件验证xml文档,默认为false)
@$dom->load('note.xml'); //这个@表示会强制加载外部DTD文件。
if (@$dom->validate()) { //(第二种方法通过方法验证)这个@表示屏蔽验证不通过时的提示信息。
echo "yes";
} else {
echo "no";
}
// $body = $dom->getElementsByTagName('body')->item(0);
// echo $body->nodeValue;
note.xml:<?xml version = '1.0' encoding = 'utf-8'?>
<!DOCTYPE note SYSTEM 'note.dtd'>
<note>
<to>明月</to>
<from>清风</from>
<heading>思念</heading>
<body>
月到<strong>中秋</strong>分外明,人到中秋倍无助
%company; <!--参数实体只能用于DTD内部-->
©right; <!--一般实体可以用于xml-->
</body>
<br/>
</note>
note.dtd:<!ELEMENT note (to,from,heading,body,br,any)>
<!ELEMENT to (#PCDATA)>
<!ELEMENT from (#PCDATA)>
<!ELEMENT heading (#PCDATA)>
<!ELEMENT body (#PCDATA|strong)*>
<!ELEMENT strong (#PCDATA)>
<!ELEMENT br EMPTY>
<!ELEMENT any ANY>
<!ENTITY % company '商务印书馆'> <!--定义参数实体,参数实体只能在DTD中使用-->
<!ENTITY copyright "2015~2022 %company; 版权所有"> <!--定义一般实体,一般实体可以在xml中使用-->