008.phpt 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. --TEST--
  2. XMLReader: libxml2 XML Reader, DTD
  3. --SKIPIF--
  4. <?php if (!extension_loaded("xmlreader")) print "skip"; ?>
  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(dirname(__FILE__)) . '/dtdexample.dtd';
  23. $file = dirname(__FILE__) . '/_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. ===DONE===
  60. --EXPECT--
  61. file DTD: ok
  62. string DTD: ok
  63. ===DONE===