008.phpt 1.5 KB

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