diff options
Diffstat (limited to 'ext/xmlreader/tests')
-rw-r--r-- | ext/xmlreader/tests/001.phpt | 29 | ||||
-rw-r--r-- | ext/xmlreader/tests/002.phpt | 41 | ||||
-rw-r--r-- | ext/xmlreader/tests/003.phpt | 84 | ||||
-rw-r--r-- | ext/xmlreader/tests/004.phpt | 44 | ||||
-rw-r--r-- | ext/xmlreader/tests/005.phpt | 37 | ||||
-rw-r--r-- | ext/xmlreader/tests/006.phpt | 36 | ||||
-rw-r--r-- | ext/xmlreader/tests/007.phpt | 57 | ||||
-rw-r--r-- | ext/xmlreader/tests/008.phpt | 71 | ||||
-rw-r--r-- | ext/xmlreader/tests/009.phpt | 28 | ||||
-rw-r--r-- | ext/xmlreader/tests/010.phpt | 27 | ||||
-rw-r--r-- | ext/xmlreader/tests/011.phpt | 34 | ||||
-rwxr-xr-x | ext/xmlreader/tests/012.dtd | 2 | ||||
-rw-r--r-- | ext/xmlreader/tests/012.phpt | 75 | ||||
-rwxr-xr-x | ext/xmlreader/tests/012.xml | 3 | ||||
-rw-r--r-- | ext/xmlreader/tests/013.phpt | 52 | ||||
-rwxr-xr-x | ext/xmlreader/tests/013.xsd | 10 | ||||
-rw-r--r-- | ext/xmlreader/tests/bug36743.phpt | 27 | ||||
-rw-r--r-- | ext/xmlreader/tests/bug42139.phpt | 31 | ||||
-rw-r--r-- | ext/xmlreader/tests/dtdexample.dtd | 8 | ||||
-rw-r--r-- | ext/xmlreader/tests/expand.phpt | 37 | ||||
-rw-r--r-- | ext/xmlreader/tests/relaxNG.rng | 11 | ||||
-rw-r--r-- | ext/xmlreader/tests/relaxNG2.rng | 23 | ||||
-rw-r--r-- | ext/xmlreader/tests/relaxNG3.rng | 8 |
23 files changed, 775 insertions, 0 deletions
diff --git a/ext/xmlreader/tests/001.phpt b/ext/xmlreader/tests/001.phpt new file mode 100644 index 0000000..ce9ade9 --- /dev/null +++ b/ext/xmlreader/tests/001.phpt @@ -0,0 +1,29 @@ +--TEST-- +XMLReader: libxml2 XML Reader, string data +--SKIPIF-- +<?php if (!extension_loaded("xmlreader")) print "skip"; ?> +--FILE-- +<?php +/* $Id$ */ + +$xmlstring = '<?xml version="1.0" encoding="UTF-8"?> +<books></books>'; + +$reader = new XMLReader(); +$reader->XML($xmlstring); + +// Only go through +while ($reader->read()) { + echo $reader->name."\n"; +} +$xmlstring = ''; +$reader = new XMLReader(); +$reader->XML($xmlstring); +?> +===DONE=== +--EXPECTF-- +books +books + +Warning: XMLReader::XML(): Empty string supplied as input in %s on line %d +===DONE=== diff --git a/ext/xmlreader/tests/002.phpt b/ext/xmlreader/tests/002.phpt new file mode 100644 index 0000000..7abd3e2 --- /dev/null +++ b/ext/xmlreader/tests/002.phpt @@ -0,0 +1,41 @@ +--TEST-- +XMLReader: libxml2 XML Reader, file data +--SKIPIF-- +<?php if (!extension_loaded("xmlreader")) print "skip"; ?> +--FILE-- +<?php +/* $Id$ */ +$filename = dirname(__FILE__) . '/_002.xml'; +$xmlstring = '<?xml version="1.0" encoding="UTF-8"?> +<books></books>'; +file_put_contents($filename, $xmlstring); + +$reader = new XMLReader(); +if ($reader->open('')) exit(); + +$reader = new XMLReader(); +if (!$reader->open($filename)) { + $reader->close(); + exit(); +} + +// Only go through +while ($reader->read()) { + echo $reader->name."\n"; +} +$reader->close(); +unlink($filename); +touch($filename); +$reader = new XMLReader(); +$reader->open($filename); +$reader->close(); +unlink($filename); + +?> +===DONE=== +--EXPECTF-- + +Warning: XMLReader::open(): Empty string supplied as input in %s on line %d +books +books +===DONE=== diff --git a/ext/xmlreader/tests/003.phpt b/ext/xmlreader/tests/003.phpt new file mode 100644 index 0000000..48aa4be --- /dev/null +++ b/ext/xmlreader/tests/003.phpt @@ -0,0 +1,84 @@ +--TEST-- +XMLReader: libxml2 XML Reader, attributes test +--SKIPIF-- +<?php if (!extension_loaded("xmlreader")) print "skip"; ?> +--FILE-- +<?php +/* $Id$ */ +$filename = dirname(__FILE__) . '/_002.xml'; + +$xmlstring = '<?xml version="1.0" encoding="UTF-8"?> +<books><book num="1" idx="2">book1</book></books>'; +file_put_contents($filename, $xmlstring); + +$reader = new XMLReader(); +if (!$reader->open($filename)) { + exit(); +} + +// Only go through +while ($reader->read()) { + if ($reader->nodeType != XMLREADER::END_ELEMENT) { + if ($reader->nodeType == XMLREADER::ELEMENT && $reader->hasAttributes) { + $attr = $reader->moveToFirstAttribute(); + echo $reader->name . ": "; + echo $reader->value . "\n"; + + if ($reader->getAttribute($reader->name) == $reader->value) { + echo "1st attr (num) failed\n"; + } + + + $attr = $reader->moveToNextAttribute(); + echo $reader->name . ": "; + echo $reader->value . "\n"; + + if ($reader->getAttribute($reader->name) == $reader->value) { + echo "2nd attr (idx) failed\n"; + } + + // Named attribute + $attr = $reader->moveToAttribute('num'); + echo $reader->name . ": "; + echo $reader->value . "\n"; + + if ($reader->getAttribute('num') == $reader->value) { + echo "attr num failed\n"; + } + + $attr = $reader->moveToAttribute('idx'); + echo $reader->name . ": "; + echo $reader->value . "\n"; + + if ($reader->getAttribute('idx') == $reader->value) { + echo "attr idx failed\n"; + } + + // Numeric positions of attributes + $attr = $reader->moveToAttributeNo(0); + echo $reader->name . ": "; + echo $reader->value . "\n"; + + if ($reader->getAttributeNo(0) == $reader->value) { + echo "attr 0 failed\n"; + } + + $attr = $reader->moveToAttributeNo(1); + echo $reader->name . ": "; + echo $reader->value . "\n"; + + } + } +} +$reader->close(); +unlink($filename); +?> +===DONE=== +--EXPECT-- +num: 1 +idx: 2 +num: 1 +idx: 2 +num: 1 +idx: 2 +===DONE=== diff --git a/ext/xmlreader/tests/004.phpt b/ext/xmlreader/tests/004.phpt new file mode 100644 index 0000000..d4f044e --- /dev/null +++ b/ext/xmlreader/tests/004.phpt @@ -0,0 +1,44 @@ +--TEST-- +XMLReader: libxml2 XML Reader, attributes test +--SKIPIF-- +<?php if (!extension_loaded("xmlreader")) print "skip"; ?> +--FILE-- +<?php +/* $Id$ */ +$filename = dirname(__FILE__) . '/_002.xml'; + +$xmlstring = '<?xml version="1.0" encoding="UTF-8"?> +<books><book num="1" idx="2">book1</book></books>'; +file_put_contents($filename, $xmlstring); + +$reader = new XMLReader(); +if (!$reader->open($filename)) { + exit(); +} + +while ($reader->read()) { + if ($reader->nodeType != XMLREADER::END_ELEMENT) { + echo $reader->name."\n"; + if ($reader->nodeType == XMLREADER::ELEMENT && $reader->hasAttributes) { + $attr = $reader->moveToFirstAttribute(); + while ($attr) { + echo " Attribute Name: ".$reader->name."\n"; + echo " Attribute Value: ".$reader->value."\n"; + $attr = $reader->moveToNextAttribute(); + } + } + } +} +$reader->close(); +unlink($filename); +?> +===DONE=== +--EXPECT-- +books +book + Attribute Name: num + Attribute Value: 1 + Attribute Name: idx + Attribute Value: 2 +#text +===DONE=== diff --git a/ext/xmlreader/tests/005.phpt b/ext/xmlreader/tests/005.phpt new file mode 100644 index 0000000..e6fd02c --- /dev/null +++ b/ext/xmlreader/tests/005.phpt @@ -0,0 +1,37 @@ +--TEST-- +XMLReader: libxml2 XML Reader, parser property set/get +--SKIPIF-- +<?php if (!extension_loaded("xmlreader")) print "skip"; ?> +--FILE-- +<?php +/* $Id$ */ + +$xmlstring = '<?xml version="1.0" encoding="UTF-8"?> +<books></books>'; + +$reader = new XMLReader(); + +$reader->XML($xmlstring); + + +$a = $reader->setParserProperty(XMLReader::LOADDTD, false); +$b = $reader->getParserProperty(XMLReader::LOADDTD); + +if (!$a && !$b) { + echo "ok\n"; +} + +$a = $reader->setParserProperty(XMLReader::SUBST_ENTITIES, true); +$b = $reader->getParserProperty(XMLReader::SUBST_ENTITIES); + +if ($a && $b) { + echo "ok\n"; +} +// Only go through +while ($reader->read()); +$reader->close(); +?> +===DONE=== +--EXPECT-- +ok +===DONE=== diff --git a/ext/xmlreader/tests/006.phpt b/ext/xmlreader/tests/006.phpt new file mode 100644 index 0000000..ce9bb45 --- /dev/null +++ b/ext/xmlreader/tests/006.phpt @@ -0,0 +1,36 @@ +--TEST-- +XMLReader: libxml2 XML Reader, moveToElement +--SKIPIF-- +<?php if (!extension_loaded("xmlreader")) print "skip"; ?> +--FILE-- +<?php +/* $Id$ */ + +$xmlstring = '<?xml version="1.0" encoding="UTF-8"?> +<books><book num="1"></book><test /></books>'; + +$reader = new XMLReader(); + +$reader->XML($xmlstring); + +// 2 read to get on the 2nd node +$reader->read(); +$reader->read(); + +if ($reader->nodeType != XMLREADER::END_ELEMENT) { + if ($reader->nodeType == XMLREADER::ELEMENT && $reader->hasAttributes) { + $attr = $reader->moveToFirstAttribute(); + if ($reader->moveToElement()) { + if ($reader->name == 'book') { + echo "ok\n"; + } + } + } +} + +$reader->close(); +?> +===DONE=== +--EXPECT-- +ok +===DONE=== diff --git a/ext/xmlreader/tests/007.phpt b/ext/xmlreader/tests/007.phpt new file mode 100644 index 0000000..842f25e --- /dev/null +++ b/ext/xmlreader/tests/007.phpt @@ -0,0 +1,57 @@ +--TEST-- +XMLReader: libxml2 XML Reader, setRelaxNGSchema +--SKIPIF-- +<?php if (!extension_loaded("xmlreader")) print "skip"; ?> +--FILE-- +<?php +/* $Id$ */ + +$xmlstring = '<TEI.2>hello</TEI.2>'; +$relaxngfile = dirname(__FILE__) . '/relaxNG.rng'; +$file = dirname(__FILE__) . '/__007.xml'; +file_put_contents($file, $xmlstring); + +$reader = new XMLReader(); +$reader->open($file); + +if ($reader->setRelaxNGSchema($relaxngfile)) { + while ($reader->read()); +} +if ($reader->isValid()) { + print "file relaxNG: ok\n"; +} else { + print "file relaxNG: failed\n"; +} +$reader->close(); +unlink($file); + + +$reader = new XMLReader(); +$reader->XML($xmlstring); + +if ($reader->setRelaxNGSchema($relaxngfile)) { + while ($reader->read()); +} +if ($reader->isValid()) { + print "string relaxNG: ok\n"; +} else { + print "string relaxNG: failed\n"; +} + +$reader->close(); + +$reader = new XMLReader(); +$reader->XML($xmlstring); + +if ($reader->setRelaxNGSchema('')) { + echo 'failed'; +} +$reader->close(); +?> +===DONE=== +--EXPECTF-- +file relaxNG: ok +string relaxNG: ok + +Warning: XMLReader::setRelaxNGSchema(): Schema data source is required in %s on line %d +===DONE=== diff --git a/ext/xmlreader/tests/008.phpt b/ext/xmlreader/tests/008.phpt new file mode 100644 index 0000000..e3af00e --- /dev/null +++ b/ext/xmlreader/tests/008.phpt @@ -0,0 +1,71 @@ +--TEST-- +XMLReader: libxml2 XML Reader, DTD +--SKIPIF-- +<?php if (!extension_loaded("xmlreader")) print "skip"; ?> +--FILE-- +<?php +/* $Id$ */ + +$xmlstring = '<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!DOCTYPE LIST SYSTEM "dtdexample.dtd"> +<LIST> +<MOVIE ID="x200338360"> +<TITLE>Move Title 1</TITLE> +<ORGTITLE/><LOC>Location 1</LOC> +<INFO/> +</MOVIE> +<MOVIE ID="m200338361"> +<TITLE>Move Title 2</TITLE> +<ORGTITLE/> +<LOC>Location 2</LOC> +<INFO/> +</MOVIE> +</LIST>'; + +$dtdfile = rawurlencode(dirname(__FILE__)) . '/dtdexample.dtd'; +$file = dirname(__FILE__) . '/__008.xml'; +file_put_contents($file, $xmlstring); + + +$reader = new XMLReader(); +$reader->open($file); +$reader->setParserProperty(XMLREADER::LOADDTD, TRUE); +$reader->setParserProperty(XMLREADER::VALIDATE, TRUE); +while($reader->read()); +if ($reader->isValid()) { + echo "file DTD: ok\n"; +} +$reader->close(); +unlink($file); + +$xmlstring = '<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!DOCTYPE LIST SYSTEM "file:///' . $dtdfile. '"> +<LIST> +<MOVIE ID="x200338360"> +<TITLE>Move Title 1</TITLE> +<ORGTITLE/><LOC>Location 1</LOC> +<INFO/> +</MOVIE> +<MOVIE ID="m200338361"> +<TITLE>Move Title 2</TITLE> +<ORGTITLE/> +<LOC>Location 2</LOC> +<INFO/> +</MOVIE> +</LIST>'; + +$reader = new XMLReader(); +$reader->XML($xmlstring); + +$reader->setParserProperty(XMLREADER::LOADDTD, TRUE); +$reader->setParserProperty(XMLREADER::VALIDATE, TRUE); +while($reader->read()); +if ($reader->isValid()) { + echo "string DTD: ok\n"; +} +?> +===DONE=== +--EXPECTF-- +file DTD: ok +string DTD: ok +===DONE=== diff --git a/ext/xmlreader/tests/009.phpt b/ext/xmlreader/tests/009.phpt new file mode 100644 index 0000000..613ef67 --- /dev/null +++ b/ext/xmlreader/tests/009.phpt @@ -0,0 +1,28 @@ +--TEST-- +XMLReader: libxml2 XML Reader, next +--SKIPIF-- +<?php if (!extension_loaded("xmlreader")) print "skip"; ?> +--FILE-- +<?php +/* $Id$ */ + +$xmlstring = '<?xml version="1.0" encoding="UTF-8"?> +<books><book num="1"><test /></book><book num="2" /></books>'; + +$reader = new XMLReader(); +$reader->XML($xmlstring); + +// Only go through +$reader->read(); +$reader->read(); + +$reader->next(); +echo $reader->name; +echo " "; +echo $reader->getAttribute('num'); +echo "\n"; +?> +===DONE=== +--EXPECTF-- +book 2 +===DONE=== diff --git a/ext/xmlreader/tests/010.phpt b/ext/xmlreader/tests/010.phpt new file mode 100644 index 0000000..a107c74 --- /dev/null +++ b/ext/xmlreader/tests/010.phpt @@ -0,0 +1,27 @@ +--TEST-- +XMLReader: libxml2 XML Reader, next +--SKIPIF-- +<?php if (!extension_loaded("xmlreader")) print "skip"; ?> +--FILE-- +<?php +/* $Id$ */ +$xmlstring = '<?xml version="1.0" encoding="UTF-8"?> +<prefix:books xmlns:prefix="uri" isbn="" prefix:isbn="12isbn">book1</prefix:books>'; + +$reader = new XMLReader(); +$reader->XML($xmlstring); + +// Only go through +$reader->read(); +$reader->read(); + +$reader->next(); +echo $reader->name; +echo " "; +echo $reader->getAttributeNs('isbn', 'uri'); +echo "\n"; +?> +===DONE=== +--EXPECTF-- +prefix:books 12isbn +===DONE=== diff --git a/ext/xmlreader/tests/011.phpt b/ext/xmlreader/tests/011.phpt new file mode 100644 index 0000000..8959923 --- /dev/null +++ b/ext/xmlreader/tests/011.phpt @@ -0,0 +1,34 @@ +--TEST-- +XMLReader: libxml2 XML Reader, string data +--SKIPIF-- +<?php if (!extension_loaded("xmlreader")) print "skip"; +$reader = new XMLReader(); +if (!method_exists($reader, 'readInnerXml')) print "skip"; +?> +--FILE-- +<?php +/* $Id$ */ + +$xmlstring = '<?xml version="1.0" encoding="UTF-8"?> +<books><book>test</book></books>'; + +$reader = new XMLReader(); +$reader->XML($xmlstring); +$reader->read(); +echo $reader->readInnerXml(); +echo "\n"; +$reader->close(); + + +$reader = new XMLReader(); +$reader->XML($xmlstring); +$reader->read(); +echo $reader->readOuterXml(); +echo "\n"; +$reader->close(); +?> +===DONE=== +--EXPECT-- +<book>test</book> +<books><book>test</book></books> +===DONE=== diff --git a/ext/xmlreader/tests/012.dtd b/ext/xmlreader/tests/012.dtd new file mode 100755 index 0000000..b65412a --- /dev/null +++ b/ext/xmlreader/tests/012.dtd @@ -0,0 +1,2 @@ +<!ELEMENT foo EMPTY> +<!ATTLIST foo bar CDATA '' baz CDATA ''> diff --git a/ext/xmlreader/tests/012.phpt b/ext/xmlreader/tests/012.phpt new file mode 100644 index 0000000..e0edeef --- /dev/null +++ b/ext/xmlreader/tests/012.phpt @@ -0,0 +1,75 @@ +--TEST-- +XMLReader: accessing empty and non existing attributes +--SKIPIF-- +<?php if (!extension_loaded("xmlreader")) print "skip"; ?> +--FILE-- +<?php +/* $Id$ */ + +$xmlstring =<<<EOF +<?xml version="1.0" encoding="UTF-8"?> +<foo bar=""/> +EOF; + +$reader = new XMLReader(); +$reader->XML($xmlstring); +$reader->read(); +var_dump($reader->getAttribute('bar')); +var_dump($reader->getAttribute('baz')); +$reader->close(); + +$xmlstring =<<<EOF +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE foo SYSTEM "012.dtd"> +<foo bar=""/> +EOF; + +$xmlstring = str_replace('012.dtd', dirname(__FILE__).'/012.dtd', $xmlstring); +if (DIRECTORY_SEPARATOR == '\\') { + $xmlstring = str_replace('\\',"/", $xmlstring); +} +$reader = new XMLReader(); +$reader->XML($xmlstring); +$reader->setParserProperty(XMLReader::DEFAULTATTRS, true); +while($reader->read() && $reader->nodeType != XMLReader::ELEMENT); +var_dump($reader->getAttribute('bar')); +var_dump($reader->getAttribute('baz')); +$reader->close(); + +echo "\nUsing URI:\n"; +$reader = new XMLReader(); +$file = dirname(__FILE__) . '/012.xml'; +if (DIRECTORY_SEPARATOR == '\\') { + $file = str_replace('\\',"/", $file); +} + +$reader->open($file); + +//$reader->setParserProperty(XMLReader::DEFAULTATTRS, true); +while($reader->read() && $reader->nodeType != XMLReader::ELEMENT); +var_dump($reader->getAttribute('bar')); +var_dump($reader->getAttribute('baz')); +$reader->close(); + +$reader = new XMLReader(); +$reader->open(dirname(__FILE__) . '/012.xml'); +$reader->setParserProperty(XMLReader::DEFAULTATTRS, true); +while($reader->read() && $reader->nodeType != XMLReader::ELEMENT); +var_dump($reader->getAttribute('bar')); +var_dump($reader->getAttribute('baz')); +$reader->close(); + +?> +===DONE=== +--EXPECT-- +string(0) "" +NULL +string(0) "" +string(0) "" + +Using URI: +string(0) "" +NULL +string(0) "" +string(0) "" +===DONE=== diff --git a/ext/xmlreader/tests/012.xml b/ext/xmlreader/tests/012.xml new file mode 100755 index 0000000..5012bd5 --- /dev/null +++ b/ext/xmlreader/tests/012.xml @@ -0,0 +1,3 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE foo SYSTEM "012.dtd"> +<foo bar=""/> diff --git a/ext/xmlreader/tests/013.phpt b/ext/xmlreader/tests/013.phpt new file mode 100644 index 0000000..f9dcdee --- /dev/null +++ b/ext/xmlreader/tests/013.phpt @@ -0,0 +1,52 @@ +--TEST-- +XMLReader: Schema validation +--SKIPIF-- +<?php if (!extension_loaded('xmlreader')) die('skip');?> +<?php if (!method_exists('XMLReader','setSchema')) die('skip XMLReader::setSchema() not supported');?> +--FILE-- +<?php +/* $Id$ */ + +$xml =<<<EOF +<?xml version="1.0" encoding="UTF-8" ?> +<items> + <item>123</item> + <item>456</item> +</items> +EOF; + +$reader = new XMLReader(); +$reader->XML($xml); +$reader->setSchema(dirname(__FILE__) . '/013.xsd'); +while($reader->read()) { + if ($reader->nodeType == XMLReader::ELEMENT && $reader->name == 'item') { + $reader->read(); + var_dump($reader->value); + } +} +$reader->close(); + +?> +===FAIL=== +<?php + +$xml =<<<EOF +<?xml version="1.0" encoding="UTF-8" ?> +<foo/> +EOF; + +$reader = new XMLReader(); +$reader->XML($xml); +$reader->setSchema(dirname(__FILE__) . '/013.xsd'); +while($reader->read() && $reader->nodeType != XMLReader::ELEMENT); +$reader->close(); + +?> +===DONE=== +--EXPECTF-- +string(3) "123" +string(3) "456" +===FAIL=== + +Warning: XMLReader::read(): Element 'foo': %s +===DONE=== diff --git a/ext/xmlreader/tests/013.xsd b/ext/xmlreader/tests/013.xsd new file mode 100755 index 0000000..50b000b --- /dev/null +++ b/ext/xmlreader/tests/013.xsd @@ -0,0 +1,10 @@ +<?xml version="1.0" encoding="UTF-8" ?> +<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"> + <xsd:element name="items"> + <xsd:complexType> + <xsd:sequence> + <xsd:element name="item" type="xsd:integer" minOccurs="0" maxOccurs="unbounded" /> + </xsd:sequence> + </xsd:complexType> + </xsd:element> +</xsd:schema> diff --git a/ext/xmlreader/tests/bug36743.phpt b/ext/xmlreader/tests/bug36743.phpt new file mode 100644 index 0000000..374941b --- /dev/null +++ b/ext/xmlreader/tests/bug36743.phpt @@ -0,0 +1,27 @@ +--TEST-- +Bug #36743 (In a class extending XMLReader array properties are not writable) +--SKIPIF-- +<?php if (!extension_loaded("xmlreader")) print "skip"; ?> +--FILE-- +<?php + +class Test extends XMLReader +{ + private $testArr = array(); + public function __construct() + { + $this->testArr[] = 1; + var_dump($this->testArr); + } +} + +$t = new test; + +echo "Done\n"; +?> +--EXPECT-- +array(1) { + [0]=> + int(1) +} +Done diff --git a/ext/xmlreader/tests/bug42139.phpt b/ext/xmlreader/tests/bug42139.phpt new file mode 100644 index 0000000..19602f0 --- /dev/null +++ b/ext/xmlreader/tests/bug42139.phpt @@ -0,0 +1,31 @@ +--TEST-- +Bug #42139 (XMLReader option constants are broken using XML()) +--SKIPIF-- +<?php if (!extension_loaded("xmlreader")) print "skip"; +if (LIBXML_VERSION < 20628) die("skip: libxml2 2.6.28+ required"); +?> +--FILE-- +<?php + +$xml = <<<XML +<?xml version="1.0" encoding="utf-8"?> +<!DOCTYPE root [ +<!ELEMENT root ANY> +<!ENTITY x "y"> +]> +<root>&x;</root> +XML; + +$reader = new XMLReader; +$reader->XML( $xml, NULL, LIBXML_NOENT); +while ( $reader->read() ) { + echo "{$reader->nodeType}, {$reader->name}, {$reader->value}\n"; +} +$reader->close(); + +?> +--EXPECT-- +10, root, +1, root, +3, #text, y +15, root, diff --git a/ext/xmlreader/tests/dtdexample.dtd b/ext/xmlreader/tests/dtdexample.dtd new file mode 100644 index 0000000..ce53f0b --- /dev/null +++ b/ext/xmlreader/tests/dtdexample.dtd @@ -0,0 +1,8 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!ELEMENT LIST (MOVIE+)> +<!ELEMENT MOVIE (TITLE, ORGTITLE, LOC, INFO)> +<!ATTLIST MOVIE ID ID #REQUIRED> +<!ELEMENT TITLE (#PCDATA)> +<!ELEMENT ORGTITLE (#PCDATA)> +<!ELEMENT LOC (#PCDATA)> +<!ELEMENT INFO (#PCDATA)> diff --git a/ext/xmlreader/tests/expand.phpt b/ext/xmlreader/tests/expand.phpt new file mode 100644 index 0000000..c77e6c3 --- /dev/null +++ b/ext/xmlreader/tests/expand.phpt @@ -0,0 +1,37 @@ +--TEST-- +XMLReader: Expand into existing DOM documet +--SKIPIF-- +<?php if (!extension_loaded("xmlreader")) print "skip"; +if (!extension_loaded("dom")) print "skip DOM extension required"; +$reader = new XMLReader(); +if (!method_exists($reader, 'expand')) print "skip"; +?> +--FILE-- +<?php + +$basexml = '<?xml version="1.0" encoding="UTF-8"?> +<books><book>base book</book></books>'; + +$xmlstring = '<?xml version="1.0" encoding="UTF-8"?> +<books><book>new book</book></books>'; + +$dom = new DOMDocument(); +$dom->loadXML($basexml); + +$reader = new XMLReader(); +$reader->XML($xmlstring); +while ($reader->read()) { + if ($reader->localName == "book") { + $node = $reader->expand($dom); + if ($node->ownerDocument) { + echo $node->ownerDocument->documentElement->firstChild->textContent . "\n"; + } + break; + } +} +$reader->close(); +?> +===DONE=== +--EXPECT-- +base book +===DONE===
\ No newline at end of file diff --git a/ext/xmlreader/tests/relaxNG.rng b/ext/xmlreader/tests/relaxNG.rng new file mode 100644 index 0000000..f4357e0 --- /dev/null +++ b/ext/xmlreader/tests/relaxNG.rng @@ -0,0 +1,11 @@ +<?xml version="1.0" encoding="iso-8859-1"?> +<grammar xmlns="http://relaxng.org/ns/structure/1.0" + datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes"> + +<include href="relaxNG2.rng"> +<define name="TEI.prose"><ref name="INCLUDE"/></define> +</include> +</grammar> + + + diff --git a/ext/xmlreader/tests/relaxNG2.rng b/ext/xmlreader/tests/relaxNG2.rng new file mode 100644 index 0000000..4adae7b --- /dev/null +++ b/ext/xmlreader/tests/relaxNG2.rng @@ -0,0 +1,23 @@ +<?xml version="1.0" encoding="utf-8"?> +<grammar xmlns="http://relaxng.org/ns/structure/1.0" xmlns:t="http://www.thaiopensource.com/ns/annotations" xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes"> + + <start> + <ref name="TEI.2"/> + </start> + <define name="IGNORE"> + <notAllowed/> + </define> + <define name="INCLUDE"> + <empty/> + </define> + + + <include href="relaxNG3.rng"/> + + <define name="TEI.2"> + <element name="TEI.2"> + <text/> + </element> + </define> + +</grammar>
\ No newline at end of file diff --git a/ext/xmlreader/tests/relaxNG3.rng b/ext/xmlreader/tests/relaxNG3.rng new file mode 100644 index 0000000..73e1eb6 --- /dev/null +++ b/ext/xmlreader/tests/relaxNG3.rng @@ -0,0 +1,8 @@ +<?xml version="1.0" encoding="utf-8"?> +<grammar xmlns="http://relaxng.org/ns/structure/1.0" xmlns:t="http://www.thaiopensource.com/ns/annotations" xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes"> + + <define name="TEI.prose" combine="interleave"> + <ref name="IGNORE"/> + </define> + +</grammar>
\ No newline at end of file |