summaryrefslogtreecommitdiff
path: root/ext/xml/tests/xml_set_notation_decl_handler_basic.phpt
blob: 6616681ff8b8698ec046a664f71e9320bd2ba8f6 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
--TEST--
Test xml_set_notation_decl_handler function : basic 
--SKIPIF--
<?php 
if (!extension_loaded("xml")) {
	print "skip - XML extension not loaded"; 
}	 
?>
--FILE--
<?php
/* Prototype  : proto bool xml_set_notation_decl_handler  ( resource $parser  , callback $handler  )
 * Description: Sets the notation declaration handler function for the XML parser.
 * Source code: ext/xml/xml.c
 * Alias to functions: 
 */

class XML_Parser
{

    function unparsed_entity_decl_handler($parser, $entity_name, $base, $system_ID, $public_ID, $notation_name)
  	{
  		echo "unparsed_entity_decl_handler called\n";
 		echo "...Entity name=" . $entity_name . "\n";
 		echo "...Base=" . $base . "\n";
 		echo "...System ID=" . $system_ID . "\n";
 		echo "...Public ID=" . $public_ID . "\n";
 		echo "...Notation name=" . $notation_name . "\n";
  	}
  	
  	function notation_decl_handler($parser, $name, $base, $system_ID,$public_ID)
  	{
  		echo "notation_decl_handler called\n"; 
 		echo "...Name=" . $name . "\n";
 		echo "...Base=" . $base . "\n";
 		echo "...System ID=" . $system_ID . "\n";
 		echo "...Public ID=" . $public_ID . "\n";
  	}
    
    function parse($data)
    {
        $parser = xml_parser_create();
        xml_set_object($parser, $this);
        xml_set_notation_decl_handler($parser, "notation_decl_handler");
        xml_set_unparsed_entity_decl_handler($parser, "unparsed_entity_decl_handler");
        xml_parse($parser, $data, true);
        xml_parser_free($parser);
    }
}

$xml = <<<HERE
<?xml version="1.0"?>
<!DOCTYPE dates [
    <!NOTATION USDATE SYSTEM "http://www.schema.net/usdate.not">
    <!NOTATION AUSDATE SYSTEM "http://www.schema.net/ausdate.not">
    <!NOTATION ISODATE SYSTEM "http://www.schema.net/isodate.not">
    <!ENTITY testUS  SYSTEM "test_usdate.xml" NDATA USDATE>
	<!ENTITY testAUS SYSTEM "test_ausdate.xml" NDATA AUSDATE>
	<!ENTITY testISO SYSTEM "test_isodate_xml" NDATA ISODATE>]>
]>
HERE;

echo "Simple test of xml_set_notation_decl_handler(() function\n"; 
$p1 = new Xml_Parser();
$p1->parse($xml); 
echo "Done\n"; 
?>
--EXPECT--
Simple test of xml_set_notation_decl_handler(() function
notation_decl_handler called
...Name=USDATE
...Base=
...System ID=http://www.schema.net/usdate.not
...Public ID=
notation_decl_handler called
...Name=AUSDATE
...Base=
...System ID=http://www.schema.net/ausdate.not
...Public ID=
notation_decl_handler called
...Name=ISODATE
...Base=
...System ID=http://www.schema.net/isodate.not
...Public ID=
unparsed_entity_decl_handler called
...Entity name=testUS
...Base=
...System ID=test_usdate.xml
...Public ID=
...Notation name=USDATE
unparsed_entity_decl_handler called
...Entity name=testAUS
...Base=
...System ID=test_ausdate.xml
...Public ID=
...Notation name=AUSDATE
unparsed_entity_decl_handler called
...Entity name=testISO
...Base=
...System ID=test_isodate_xml
...Public ID=
...Notation name=ISODATE
Done