14 changed files with 499 additions and 0 deletions
-
29ext/xmlreader/tests/001.phpt
-
39ext/xmlreader/tests/002.phpt
-
83ext/xmlreader/tests/003.phpt
-
43ext/xmlreader/tests/004.phpt
-
37ext/xmlreader/tests/005.phpt
-
36ext/xmlreader/tests/006.phpt
-
57ext/xmlreader/tests/007.phpt
-
70ext/xmlreader/tests/008.phpt
-
28ext/xmlreader/tests/009.phpt
-
27ext/xmlreader/tests/010.phpt
-
8ext/xmlreader/tests/dtdexample.dtd
-
11ext/xmlreader/tests/relaxNG.rng
-
23ext/xmlreader/tests/relaxNG2.rng
-
8ext/xmlreader/tests/relaxNG3.rng
@ -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=== |
|||
@ -0,0 +1,39 @@ |
|||
--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"; |
|||
} |
|||
unlink($filename); |
|||
touch($filename); |
|||
$reader = new XMLReader(); |
|||
$reader->open($filename); |
|||
unlink($filename); |
|||
|
|||
?> |
|||
===DONE=== |
|||
--EXPECTF-- |
|||
|
|||
Warning: XMLReader::open(): Empty string supplied as input in %s on line %d |
|||
books |
|||
books |
|||
===DONE=== |
|||
@ -0,0 +1,83 @@ |
|||
--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"; |
|||
|
|||
} |
|||
} |
|||
} |
|||
unlink($filename); |
|||
?> |
|||
===DONE=== |
|||
--EXPECT-- |
|||
num: 1 |
|||
idx: 2 |
|||
num: 1 |
|||
idx: 2 |
|||
num: 1 |
|||
idx: 2 |
|||
===DONE=== |
|||
@ -0,0 +1,43 @@ |
|||
--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(); |
|||
} |
|||
} |
|||
} |
|||
} |
|||
unlink($filename); |
|||
?> |
|||
===DONE=== |
|||
--EXPECT-- |
|||
books |
|||
book |
|||
Attribute Name: num |
|||
Attribute Value: 1 |
|||
Attribute Name: idx |
|||
Attribute Value: 2 |
|||
#text |
|||
===DONE=== |
|||
@ -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=== |
|||
@ -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=== |
|||
@ -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=== |
|||
@ -0,0 +1,70 @@ |
|||
--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 = 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"; |
|||
} |
|||
unlink($file); |
|||
|
|||
$xmlstring = '<?xml version="1.0" encoding="UTF-8" standalone="no"?> |
|||
<!DOCTYPE LIST SYSTEM "file:///' . dirname(__FILE__). '/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>'; |
|||
|
|||
$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=== |
|||
@ -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=== |
|||
@ -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=== |
|||
@ -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)> |
|||
@ -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> |
|||
|
|||
|
|||
|
|||
@ -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> |
|||
@ -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> |
|||
Write
Preview
Loading…
Cancel
Save
Reference in new issue