1--TEST--
2Test xml_set_notation_decl_handler function : basic
3--SKIPIF--
4<?php
5if (!extension_loaded("xml")) {
6	print "skip - XML extension not loaded";
7}
8?>
9--FILE--
10<?php
11/* Prototype  : proto bool xml_set_notation_decl_handler  ( resource $parser  , callback $handler  )
12 * Description: Sets the notation declaration handler function for the XML parser.
13 * Source code: ext/xml/xml.c
14 * Alias to functions:
15 */
16
17class XML_Parser
18{
19
20    function unparsed_entity_decl_handler($parser, $entity_name, $base, $system_ID, $public_ID, $notation_name)
21  	{
22  		echo "unparsed_entity_decl_handler called\n";
23 		echo "...Entity name=" . $entity_name . "\n";
24 		echo "...Base=" . $base . "\n";
25 		echo "...System ID=" . $system_ID . "\n";
26 		echo "...Public ID=" . $public_ID . "\n";
27 		echo "...Notation name=" . $notation_name . "\n";
28  	}
29
30  	function notation_decl_handler($parser, $name, $base, $system_ID,$public_ID)
31  	{
32  		echo "notation_decl_handler called\n";
33 		echo "...Name=" . $name . "\n";
34 		echo "...Base=" . $base . "\n";
35 		echo "...System ID=" . $system_ID . "\n";
36 		echo "...Public ID=" . $public_ID . "\n";
37  	}
38
39    function parse($data)
40    {
41        $parser = xml_parser_create();
42        xml_set_object($parser, $this);
43        xml_set_notation_decl_handler($parser, "notation_decl_handler");
44        xml_set_unparsed_entity_decl_handler($parser, "unparsed_entity_decl_handler");
45        xml_parse($parser, $data, true);
46        xml_parser_free($parser);
47    }
48}
49
50$xml = <<<HERE
51<?xml version="1.0"?>
52<!DOCTYPE dates [
53    <!NOTATION USDATE SYSTEM "http://www.schema.net/usdate.not">
54    <!NOTATION AUSDATE SYSTEM "http://www.schema.net/ausdate.not">
55    <!NOTATION ISODATE SYSTEM "http://www.schema.net/isodate.not">
56    <!ENTITY testUS  SYSTEM "test_usdate.xml" NDATA USDATE>
57	<!ENTITY testAUS SYSTEM "test_ausdate.xml" NDATA AUSDATE>
58	<!ENTITY testISO SYSTEM "test_isodate_xml" NDATA ISODATE>]>
59]>
60HERE;
61
62echo "Simple test of xml_set_notation_decl_handler(() function\n";
63$p1 = new Xml_Parser();
64$p1->parse($xml);
65echo "Done\n";
66?>
67--EXPECT--
68Simple test of xml_set_notation_decl_handler(() function
69notation_decl_handler called
70...Name=USDATE
71...Base=
72...System ID=http://www.schema.net/usdate.not
73...Public ID=
74notation_decl_handler called
75...Name=AUSDATE
76...Base=
77...System ID=http://www.schema.net/ausdate.not
78...Public ID=
79notation_decl_handler called
80...Name=ISODATE
81...Base=
82...System ID=http://www.schema.net/isodate.not
83...Public ID=
84unparsed_entity_decl_handler called
85...Entity name=testUS
86...Base=
87...System ID=test_usdate.xml
88...Public ID=
89...Notation name=USDATE
90unparsed_entity_decl_handler called
91...Entity name=testAUS
92...Base=
93...System ID=test_ausdate.xml
94...Public ID=
95...Notation name=AUSDATE
96unparsed_entity_decl_handler called
97...Entity name=testISO
98...Base=
99...System ID=test_isodate_xml
100...Public ID=
101...Notation name=ISODATE
102Done
103