008.phpt 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. --TEST--
  2. XMLReader: libxml2 XML Reader, DTD
  3. --EXTENSIONS--
  4. xmlreader
  5. --FILE--
  6. <?php
  7. $xmlstring = '<?xml version="1.0" encoding="UTF-8" standalone="no"?>
  8. <!DOCTYPE LIST SYSTEM "dtdexample.dtd">
  9. <LIST>
  10. <MOVIE ID="x200338360">
  11. <TITLE>Move Title 1</TITLE>
  12. <ORGTITLE/><LOC>Location 1</LOC>
  13. <INFO/>
  14. </MOVIE>
  15. <MOVIE ID="m200338361">
  16. <TITLE>Move Title 2</TITLE>
  17. <ORGTITLE/>
  18. <LOC>Location 2</LOC>
  19. <INFO/>
  20. </MOVIE>
  21. </LIST>';
  22. $dtdfile = rawurlencode(__DIR__) . '/dtdexample.dtd';
  23. $file = __DIR__ . '/_008.xml';
  24. file_put_contents($file, $xmlstring);
  25. $reader = new XMLReader();
  26. $reader->open($file);
  27. $reader->setParserProperty(XMLREADER::LOADDTD, TRUE);
  28. $reader->setParserProperty(XMLREADER::VALIDATE, TRUE);
  29. while($reader->read());
  30. if ($reader->isValid()) {
  31. echo "file DTD: ok\n";
  32. }
  33. $reader->close();
  34. unlink($file);
  35. $xmlstring = '<?xml version="1.0" encoding="UTF-8" standalone="no"?>
  36. <!DOCTYPE LIST SYSTEM "file:///' . $dtdfile. '">
  37. <LIST>
  38. <MOVIE ID="x200338360">
  39. <TITLE>Move Title 1</TITLE>
  40. <ORGTITLE/><LOC>Location 1</LOC>
  41. <INFO/>
  42. </MOVIE>
  43. <MOVIE ID="m200338361">
  44. <TITLE>Move Title 2</TITLE>
  45. <ORGTITLE/>
  46. <LOC>Location 2</LOC>
  47. <INFO/>
  48. </MOVIE>
  49. </LIST>';
  50. $reader = new XMLReader();
  51. $reader->XML($xmlstring);
  52. $reader->setParserProperty(XMLREADER::LOADDTD, TRUE);
  53. $reader->setParserProperty(XMLREADER::VALIDATE, TRUE);
  54. while($reader->read());
  55. if ($reader->isValid()) {
  56. echo "string DTD: ok\n";
  57. }
  58. ?>
  59. --EXPECT--
  60. file DTD: ok
  61. string DTD: ok