HEX
Server: nginx/1.24.0
System: Linux localhost 5.15.0-46-generic #49-Ubuntu SMP Thu Aug 4 18:03:25 UTC 2022 x86_64
User: www (1000)
PHP: 8.3.27
Disabled: passthru,exec,system,putenv,chroot,chgrp,chown,shell_exec,popen,proc_open,pcntl_exec,ini_alter,ini_restore,dl,openlog,syslog,readlink,symlink,popepassthru,pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,imap_open,apache_setenv
Upload Files
File: /www/server/php/83/src/ext/xml/tests/xml_set_notation_decl_handler_basic.phpt
--TEST--
Test xml_set_notation_decl_handler function : basic
--EXTENSIONS--
xml
--FILE--
<?php
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