mirror of
https://github.com/php/php-src.git
synced 2024-10-03 15:56:11 +00:00
d14f23365c
This test has long been near the top of the reported output diffs. For example, on http://qa.php.net/reports/?version=5.4.0 it has diffed 1307 times out of 3543 reports, at time of this commit. (The second highest diff has occurred 710 times.)
112 lines
2.3 KiB
PHP
112 lines
2.3 KiB
PHP
--TEST--
|
|
Test 7: DTD tests
|
|
--SKIPIF--
|
|
<?php
|
|
require_once('skipif.inc');
|
|
?>
|
|
--FILE--
|
|
<?php
|
|
$xml = <<< EOXML
|
|
<?xml version="1.0" encoding="ISO-8859-1"?>
|
|
<!DOCTYPE courses [
|
|
<!ELEMENT courses (course+)>
|
|
<!ELEMENT course (title, description, temp*)>
|
|
<!ATTLIST course cid ID #REQUIRED>
|
|
<!ELEMENT title (#PCDATA)>
|
|
<!ELEMENT description (#PCDATA)>
|
|
<!ELEMENT temp (#PCDATA)>
|
|
<!ATTLIST temp vid ID #REQUIRED>
|
|
<!ENTITY test 'http://www.hpl.hp.com/semweb/2003/query_tester#'>
|
|
<!ENTITY rdf 'http://www.w3.org/1999/02/22-rdf-syntax-ns#'>
|
|
<!NOTATION GIF PUBLIC "-" "image/gif">
|
|
<!ENTITY myimage PUBLIC "-" "mypicture.gif" NDATA GIF>
|
|
]>
|
|
<courses>
|
|
<course cid="c1">
|
|
<title>Basic Languages</title>
|
|
<description>Introduction to Languages</description>
|
|
</course>
|
|
<course cid="c6">
|
|
<title>French I</title>
|
|
<description>Introduction to French</description>
|
|
<temp vid="c7">
|
|
</temp>
|
|
</course>
|
|
</courses>
|
|
EOXML;
|
|
|
|
$dom = new DOMDocument();
|
|
$dom->loadXML($xml);
|
|
|
|
$dtd = $dom->doctype;
|
|
|
|
/* Notation Tests */
|
|
$nots = $dtd->notations;
|
|
|
|
$length = $nots->length;
|
|
echo "Length: ".$length."\n";
|
|
|
|
foreach ($nots AS $key=>$node) {
|
|
echo "Key $key: ".$node->nodeName." (".$node->systemId.") (".$node->publicId.")\n";
|
|
}
|
|
print "\n";
|
|
for($x=0; $x < $length; $x++) {
|
|
echo "Index $x: ".$nots->item($x)->nodeName." (".$nots->item($x)->systemId.") (".$nots->item($x)->publicId.")\n";
|
|
}
|
|
|
|
echo "\n";
|
|
$node = $nots->getNamedItem('xxx');
|
|
var_dump($node);
|
|
|
|
echo "\n";
|
|
/* Entity Decl Tests */
|
|
$ents = $dtd->entities;
|
|
$length = $ents->length;
|
|
echo "Length: ".$length."\n";
|
|
|
|
$xkeys = array();
|
|
foreach ($ents AS $key=>$node) {
|
|
$xkeys[] = "Key: $key Name: ".$node->nodeName."\n";
|
|
}
|
|
sort($xkeys); // fix inconsistent output ordering (bug #61810)
|
|
foreach ($xkeys as $key => $node) {
|
|
echo $node;
|
|
}
|
|
echo "\n";
|
|
|
|
$xkeys = array();
|
|
for($x=0; $x < $length; $x++) {
|
|
$xkeys[] = "Index: ".$ents->item($x)->nodeName."\n";
|
|
}
|
|
sort($xkeys); // fix inconsistent output ordering (bug #61810)
|
|
foreach ($xkeys as $key => $node) {
|
|
echo $node;
|
|
}
|
|
|
|
echo "\n";
|
|
$node = $ents->item(3);
|
|
var_dump($node);
|
|
$node = $ents->getNamedItem('xxx');
|
|
var_dump($node);
|
|
|
|
|
|
--EXPECT--
|
|
Length: 1
|
|
Key GIF: GIF (image/gif) (-)
|
|
|
|
Index 0: GIF (image/gif) (-)
|
|
|
|
NULL
|
|
|
|
Length: 3
|
|
Key: myimage Name: myimage
|
|
Key: rdf Name: rdf
|
|
Key: test Name: test
|
|
|
|
Index: myimage
|
|
Index: rdf
|
|
Index: test
|
|
|
|
NULL
|
|
NULL
|