mirror of
https://github.com/php/php-src.git
synced 2024-11-23 18:04:36 +08:00
MFH: enable a few additional functions
- add tests
This commit is contained in:
parent
6b86285dd2
commit
c98ef984d8
@ -139,6 +139,7 @@ static zend_function_entry xmlwriter_functions[] = {
|
||||
PHP_FE(xmlwriter_write_attribute, NULL)
|
||||
#if LIBXML_VERSION > 20617
|
||||
PHP_FE(xmlwriter_start_attribute_ns,NULL)
|
||||
PHP_FE(xmlwriter_write_attribute_ns,NULL)
|
||||
#endif
|
||||
PHP_FE(xmlwriter_start_element, NULL)
|
||||
PHP_FE(xmlwriter_end_element, NULL)
|
||||
@ -160,6 +161,12 @@ static zend_function_entry xmlwriter_functions[] = {
|
||||
PHP_FE(xmlwriter_write_dtd, NULL)
|
||||
PHP_FE(xmlwriter_start_dtd_element, NULL)
|
||||
PHP_FE(xmlwriter_end_dtd_element, NULL)
|
||||
PHP_FE(xmlwriter_write_dtd_element, NULL)
|
||||
#if LIBXML_VERSION > 20608
|
||||
PHP_FE(xmlwriter_start_dtd_attlist, NULL)
|
||||
PHP_FE(xmlwriter_end_dtd_attlist, NULL)
|
||||
PHP_FE(xmlwriter_write_dtd_attlist, NULL)
|
||||
#endif
|
||||
PHP_FE(xmlwriter_output_memory, NULL)
|
||||
PHP_FE(xmlwriter_flush, NULL)
|
||||
{NULL, NULL, NULL}
|
||||
@ -184,6 +191,7 @@ static zend_function_entry xmlwriter_class_functions[] = {
|
||||
PHP_ME_MAPPING(writeAttribute, xmlwriter_write_attribute, NULL)
|
||||
#if LIBXML_VERSION > 20617
|
||||
PHP_ME_MAPPING(startAttributeNs, xmlwriter_start_attribute_ns,NULL)
|
||||
PHP_ME_MAPPING(writeAttributeNs, xmlwriter_write_attribute_ns,NULL)
|
||||
#endif
|
||||
PHP_ME_MAPPING(startElement, xmlwriter_start_element, NULL)
|
||||
PHP_ME_MAPPING(endElement, xmlwriter_end_element, NULL)
|
||||
@ -205,6 +213,12 @@ static zend_function_entry xmlwriter_class_functions[] = {
|
||||
PHP_ME_MAPPING(writeDtd, xmlwriter_write_dtd, NULL)
|
||||
PHP_ME_MAPPING(startDtdElement, xmlwriter_start_dtd_element, NULL)
|
||||
PHP_ME_MAPPING(endDtdElement, xmlwriter_end_dtd_element, NULL)
|
||||
PHP_ME_MAPPING(writeDtdElement, xmlwriter_write_dtd_element, NULL)
|
||||
#if LIBXML_VERSION > 20608
|
||||
PHP_ME_MAPPING(startDtdAttlist, xmlwriter_start_dtd_attlist, NULL)
|
||||
PHP_ME_MAPPING(endDtdAttlist, xmlwriter_end_dtd_attlist, NULL)
|
||||
PHP_ME_MAPPING(writeDtdAttlist, xmlwriter_write_dtd_attlist, NULL)
|
||||
#endif
|
||||
PHP_ME_MAPPING(outputMemory, xmlwriter_output_memory, NULL)
|
||||
PHP_ME_MAPPING(flush, xmlwriter_flush, NULL)
|
||||
{NULL, NULL, NULL}
|
||||
@ -338,7 +352,7 @@ static void xmlwriter_dtor(zend_rsrc_list_entry *rsrc TSRMLS_DC) {
|
||||
/* }}} */
|
||||
|
||||
#if LIBXML_VERSION >= 20605
|
||||
/* {{{ proto bool xmlwriter_set_indent(resource xmlwriter, bool)
|
||||
/* {{{ proto bool xmlwriter_set_indent(resource xmlwriter, bool indent)
|
||||
Toggle indentation on/off - returns FALSE on error */
|
||||
PHP_FUNCTION(xmlwriter_set_indent)
|
||||
{
|
||||
@ -628,6 +642,7 @@ PHP_FUNCTION(xmlwriter_write_attribute)
|
||||
}
|
||||
/* }}} */
|
||||
|
||||
#if LIBXML_VERSION > 20617
|
||||
/* {{{ proto bool xmlwriter_write_attribute_ns(resource xmlwriter, string prefix, string name, string uri, string content)
|
||||
Write full namespaced attribute - returns FALSE on error */
|
||||
PHP_FUNCTION(xmlwriter_write_attribute_ns)
|
||||
@ -671,6 +686,7 @@ PHP_FUNCTION(xmlwriter_write_attribute_ns)
|
||||
RETURN_FALSE;
|
||||
}
|
||||
/* }}} */
|
||||
#endif
|
||||
|
||||
/* {{{ proto bool xmlwriter_start_element(resource xmlwriter, string name)
|
||||
Create start element tag - returns FALSE on error */
|
||||
@ -1364,7 +1380,7 @@ PHP_FUNCTION(xmlwriter_write_dtd_element)
|
||||
zval *this = getThis();
|
||||
|
||||
if (this) {
|
||||
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s", &name, &name_len) == FAILURE) {
|
||||
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "ss", &name, &name_len, &content, &content_len) == FAILURE) {
|
||||
return;
|
||||
}
|
||||
XMLWRITER_FROM_OBJECT(intern, this);
|
||||
@ -1393,6 +1409,7 @@ PHP_FUNCTION(xmlwriter_write_dtd_element)
|
||||
}
|
||||
/* }}} */
|
||||
|
||||
#if LIBXML_VERSION > 20608
|
||||
/* {{{ proto bool xmlwriter_start_dtd_attlist(resource xmlwriter, string name)
|
||||
Create start DTD AttList - returns FALSE on error */
|
||||
PHP_FUNCTION(xmlwriter_start_dtd_attlist)
|
||||
@ -1583,6 +1600,7 @@ PHP_FUNCTION(xmlwriter_write_dtd_entity)
|
||||
RETURN_FALSE;
|
||||
}
|
||||
/* }}} */
|
||||
#endif
|
||||
|
||||
/* {{{ proto resource xmlwriter_open_uri(resource xmlwriter, string source)
|
||||
Create new xmlwriter using source uri for output */
|
||||
|
@ -63,9 +63,9 @@ PHP_FUNCTION(xmlwriter_set_indent_string);
|
||||
#endif
|
||||
PHP_FUNCTION(xmlwriter_start_attribute);
|
||||
PHP_FUNCTION(xmlwriter_end_attribute);
|
||||
PHP_FUNCTION(xmlwriter_start_attribute_ns);
|
||||
PHP_FUNCTION(xmlwriter_write_attribute);
|
||||
#if LIBXML_VERSION > 20617
|
||||
PHP_FUNCTION(xmlwriter_start_attribute_ns);
|
||||
PHP_FUNCTION(xmlwriter_write_attribute_ns);
|
||||
#endif
|
||||
PHP_FUNCTION(xmlwriter_start_element);
|
||||
@ -92,6 +92,12 @@ PHP_FUNCTION(xmlwriter_end_dtd);
|
||||
PHP_FUNCTION(xmlwriter_write_dtd);
|
||||
PHP_FUNCTION(xmlwriter_start_dtd_element);
|
||||
PHP_FUNCTION(xmlwriter_end_dtd_element);
|
||||
PHP_FUNCTION(xmlwriter_write_dtd_element);
|
||||
#if LIBXML_VERSION > 20608
|
||||
PHP_FUNCTION(xmlwriter_start_dtd_attlist);
|
||||
PHP_FUNCTION(xmlwriter_end_dtd_attlist);
|
||||
PHP_FUNCTION(xmlwriter_write_dtd_attlist);
|
||||
#endif
|
||||
PHP_FUNCTION(xmlwriter_open_uri);
|
||||
PHP_FUNCTION(xmlwriter_open_memory);
|
||||
PHP_FUNCTION(xmlwriter_output_memory);
|
||||
|
27
ext/xmlwriter/tests/006.phpt
Normal file
27
ext/xmlwriter/tests/006.phpt
Normal file
@ -0,0 +1,27 @@
|
||||
--TEST--
|
||||
XMLWriter: libxml2 XML Writer, startDTD/writeElementNS
|
||||
--SKIPIF--
|
||||
<?php
|
||||
if (!extension_loaded("xmlwriter")) die("skip");
|
||||
if (!function_exists("xmlwriter_start_comment")) die("skip: libxml2 2.6.7+ required");
|
||||
?>
|
||||
--FILE--
|
||||
<?php
|
||||
/* $Id$ */
|
||||
|
||||
$doc_dest = '001.xml';
|
||||
$xw = xmlwriter_open_uri($doc_dest);
|
||||
xmlwriter_start_dtd($xw, 'foo', NULL, 'urn:bar');
|
||||
xmlwriter_end_dtd($xw);
|
||||
xmlwriter_start_element($xw, 'foo');
|
||||
xmlwriter_write_element_ns($xw, 'foo', 'bar', 'urn:foo', 'dummy content');
|
||||
xmlwriter_end_element($xw);
|
||||
|
||||
// Force to write and empty the buffer
|
||||
$output_bytes = xmlwriter_flush($xw, true);
|
||||
echo file_get_contents($doc_dest);
|
||||
unset($xw);
|
||||
unlink('001.xml');
|
||||
?>
|
||||
--EXPECT--
|
||||
<!DOCTYPE foo SYSTEM "urn:bar"><foo><foo:bar xmlns:foo="urn:foo">dummy content</foo:bar></foo>
|
38
ext/xmlwriter/tests/007.phpt
Normal file
38
ext/xmlwriter/tests/007.phpt
Normal file
@ -0,0 +1,38 @@
|
||||
--TEST--
|
||||
XMLWriter: libxml2 XML Writer, Elements & Attributes
|
||||
--SKIPIF--
|
||||
<?php
|
||||
if (!extension_loaded("xmlwriter")) die("skip");
|
||||
if (!function_exists("xmlwriter_start_comment")) die("skip: libxml2 2.6.7+ required");
|
||||
?>
|
||||
--FILE--
|
||||
<?php
|
||||
/* $Id$ */
|
||||
|
||||
$xw = xmlwriter_open_memory();
|
||||
xmlwriter_set_indent($xw, TRUE);
|
||||
xmlwriter_set_indent_string($xw, ' ');
|
||||
xmlwriter_start_document($xw, '1.0', "UTF-8");
|
||||
xmlwriter_start_element($xw, 'root');
|
||||
xmlwriter_start_element_ns($xw, 'ns1', 'child1', 'urn:ns1');
|
||||
xmlwriter_start_attribute_ns($xw, 'ns1', 'att1', 'urn:ns1');
|
||||
xmlwriter_text($xw, 'a&b');
|
||||
xmlwriter_end_attribute($xw);
|
||||
xmlwriter_write_attribute($xw, 'att2', "double\" single'");
|
||||
xmlwriter_start_attribute_ns($xw, 'ns1', 'att2', 'urn:ns1');
|
||||
xmlwriter_text($xw, "<>\"'&");
|
||||
xmlwriter_end_attribute($xw);
|
||||
xmlwriter_write_element($xw, 'chars', "special characters: <>\"'&");
|
||||
xmlwriter_end_element($xw);
|
||||
xmlwriter_end_document($xw);
|
||||
// Force to write and empty the buffer
|
||||
$output = xmlwriter_flush($xw, true);
|
||||
print $output;
|
||||
?>
|
||||
--EXPECT--
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<root>
|
||||
<ns1:child1 xmlns:ns1="urn:ns1" ns1:att1="a&b" xmlns:ns1="urn:ns1" att2="double" single'" ns1:att2="<>"'&" xmlns:ns1="urn:ns1">
|
||||
<chars>special characters: <>"'&</chars>
|
||||
</ns1:child1>
|
||||
</root>
|
35
ext/xmlwriter/tests/008.phpt
Normal file
35
ext/xmlwriter/tests/008.phpt
Normal file
@ -0,0 +1,35 @@
|
||||
--TEST--
|
||||
XMLWriter: libxml2 XML Writer DTD Element & Attlist
|
||||
--SKIPIF--
|
||||
<?php
|
||||
if (!extension_loaded("xmlwriter")) die("skip");
|
||||
if (!function_exists("xmlwriter_start_comment")) die("skip: libxml2 2.6.7+ required");
|
||||
?>
|
||||
--FILE--
|
||||
<?php
|
||||
/* $Id$ */
|
||||
|
||||
$xw = xmlwriter_open_memory();
|
||||
xmlwriter_set_indent($xw, TRUE);
|
||||
xmlwriter_start_document($xw, NULL, "UTF-8");
|
||||
xmlwriter_write_dtd_element($xw, 'sxe', '(elem1+, elem11, elem22*)');
|
||||
xmlwriter_write_dtd_attlist($xw, 'sxe', 'id CDATA #implied');
|
||||
xmlwriter_start_dtd_element($xw, 'elem1');
|
||||
xmlwriter_text($xw, 'elem2*');
|
||||
xmlwriter_end_dtd_element($xw);
|
||||
xmlwriter_start_dtd_attlist($xw, 'elem1');
|
||||
xmlwriter_text($xw, "attr1 CDATA #required\n");
|
||||
xmlwriter_text($xw, 'attr2 CDATA #implied');
|
||||
xmlwriter_end_dtd_attlist($xw);
|
||||
xmlwriter_end_document($xw);
|
||||
// Force to write and empty the buffer
|
||||
$output = xmlwriter_flush($xw, true);
|
||||
print $output;
|
||||
?>
|
||||
--EXPECT--
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!ELEMENT sxe (elem1+, elem11, elem22*)>
|
||||
<!ATTLIST sxe id CDATA #implied>
|
||||
<!ELEMENT elem1 elem2*>
|
||||
<!ATTLIST elem1 attr1 CDATA #required
|
||||
attr2 CDATA #implied>
|
43
ext/xmlwriter/tests/009.phpt
Normal file
43
ext/xmlwriter/tests/009.phpt
Normal file
@ -0,0 +1,43 @@
|
||||
--TEST--
|
||||
XMLWriter: PI, Comment, CDATA
|
||||
--SKIPIF--
|
||||
<?php
|
||||
if (!extension_loaded("xmlwriter")) die("skip");
|
||||
if (!function_exists("xmlwriter_start_comment")) die("skip: libxml2 2.6.7+ required");
|
||||
?>
|
||||
--FILE--
|
||||
<?php
|
||||
/* $Id$ */
|
||||
|
||||
$xw = xmlwriter_open_memory();
|
||||
xmlwriter_set_indent($xw, TRUE);
|
||||
xmlwriter_start_document($xw, NULL, "UTF-8");
|
||||
xmlwriter_start_element($xw, 'root');
|
||||
xmlwriter_write_attribute($xw, 'id', 'elem1');
|
||||
xmlwriter_start_element($xw, 'elem1');
|
||||
xmlwriter_write_attribute($xw, 'attr1', 'first');
|
||||
xmlwriter_write_comment($xw, 'start PI');
|
||||
xmlwriter_start_element($xw, 'pi');
|
||||
xmlwriter_write_pi($xw, 'php', 'echo "hello world"; ');
|
||||
xmlwriter_end_element($xw);
|
||||
xmlwriter_start_element($xw, 'cdata');
|
||||
xmlwriter_start_cdata($xw);
|
||||
xmlwriter_end_element($xw);
|
||||
xmlwriter_text($xw, '<>&"');
|
||||
xmlwriter_end_cdata($xw);
|
||||
xmlwriter_end_element($xw);
|
||||
xmlwriter_end_element($xw);
|
||||
xmlwriter_end_document($xw);
|
||||
// Force to write and empty the buffer
|
||||
$output = xmlwriter_flush($xw, true);
|
||||
print $output;
|
||||
?>
|
||||
--EXPECT--
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<root id="elem1">
|
||||
<elem1 attr1="first">
|
||||
<!--start PI-->
|
||||
<pi><?php echo "hello world"; ?></pi>
|
||||
<cdata><![CDATA[<>&"]]></cdata>
|
||||
</elem1>
|
||||
</root>
|
39
ext/xmlwriter/tests/OO_007.phpt
Normal file
39
ext/xmlwriter/tests/OO_007.phpt
Normal file
@ -0,0 +1,39 @@
|
||||
--TEST--
|
||||
XMLWriter: libxml2 XML Writer, Elements & Attributes
|
||||
--SKIPIF--
|
||||
<?php
|
||||
if (!extension_loaded("xmlwriter")) die("skip");
|
||||
if (!function_exists("$xw->start_comment")) die("skip: libxml2 2.6.7+ required");
|
||||
?>
|
||||
--FILE--
|
||||
<?php
|
||||
/* $Id$ */
|
||||
|
||||
$xw = new XMLWriter();
|
||||
$xw->openMemory();
|
||||
$xw->setIndent(TRUE);
|
||||
$xw->setIndentString(' ');
|
||||
$xw->startDocument('1.0', "UTF-8");
|
||||
$xw->startElement('root');
|
||||
$xw->startElementNS('ns1', 'child1', 'urn:ns1');
|
||||
$xw->startAttributeNS('ns1', 'att1', 'urn:ns1');
|
||||
$xw->text('a&b');
|
||||
$xw->endAttribute();
|
||||
$xw->writeAttribute('att2', "double\" single'");
|
||||
$xw->startAttributeNS('ns1', 'att2', 'urn:ns1');
|
||||
$xw->text("<>\"'&");
|
||||
$xw->endAttribute();
|
||||
$xw->writeElement('chars', "special characters: <>\"'&");
|
||||
$xw->endElement();
|
||||
$xw->endDocument();
|
||||
// Force to write and empty the buffer
|
||||
$output = $xw->flush(true);
|
||||
print $output;
|
||||
?>
|
||||
--EXPECT--
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<root>
|
||||
<ns1:child1 xmlns:ns1="urn:ns1" ns1:att1="a&b" xmlns:ns1="urn:ns1" att2="double" single'" ns1:att2="<>"'&" xmlns:ns1="urn:ns1">
|
||||
<chars>special characters: <>"'&</chars>
|
||||
</ns1:child1>
|
||||
</root>
|
36
ext/xmlwriter/tests/OO_008.phpt
Normal file
36
ext/xmlwriter/tests/OO_008.phpt
Normal file
@ -0,0 +1,36 @@
|
||||
--TEST--
|
||||
XMLWriter: libxml2 XML Writer DTD Element & Attlist
|
||||
--SKIPIF--
|
||||
<?php
|
||||
if (!extension_loaded("xmlwriter")) die("skip");
|
||||
if (!function_exists("$xw->start_comment")) die("skip: libxml2 2.6.7+ required");
|
||||
?>
|
||||
--FILE--
|
||||
<?php
|
||||
/* $Id$ */
|
||||
|
||||
$xw = new XMLWriter();
|
||||
$xw->openMemory();
|
||||
$xw->setIndent(TRUE);
|
||||
$xw->startDocument(NULL, "UTF-8");
|
||||
$xw->writeDtdElement('sxe', '(elem1+, elem11, elem22*)');
|
||||
$xw->writeDtdAttlist('sxe', 'id CDATA #implied');
|
||||
$xw->startDtdElement('elem1');
|
||||
$xw->text('elem2*');
|
||||
$xw->endDtdElement();
|
||||
$xw->startDtdAttlist('elem1');
|
||||
$xw->text("attr1 CDATA #required\n");
|
||||
$xw->text('attr2 CDATA #implied');
|
||||
$xw->endDtdAttlist();
|
||||
$xw->endDocument();
|
||||
// Force to write and empty the buffer
|
||||
$output = $xw->flush(true);
|
||||
print $output;
|
||||
?>
|
||||
--EXPECT--
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!ELEMENT sxe (elem1+, elem11, elem22*)>
|
||||
<!ATTLIST sxe id CDATA #implied>
|
||||
<!ELEMENT elem1 elem2*>
|
||||
<!ATTLIST elem1 attr1 CDATA #required
|
||||
attr2 CDATA #implied>
|
44
ext/xmlwriter/tests/OO_009.phpt
Normal file
44
ext/xmlwriter/tests/OO_009.phpt
Normal file
@ -0,0 +1,44 @@
|
||||
--TEST--
|
||||
XMLWriter: PI, Comment, CDATA
|
||||
--SKIPIF--
|
||||
<?php
|
||||
if (!extension_loaded("xmlwriter")) die("skip");
|
||||
if (!function_exists("$xw->start_comment")) die("skip: libxml2 2.6.7+ required");
|
||||
?>
|
||||
--FILE--
|
||||
<?php
|
||||
/* $Id$ */
|
||||
|
||||
$xw = new XMLWriter();
|
||||
$xw->openMemory();
|
||||
$xw->setIndent(TRUE);
|
||||
$xw->startDocument("1.0", "UTF-8");
|
||||
$xw->startElement('root');
|
||||
$xw->writeAttribute('id', 'elem1');
|
||||
$xw->startElement('elem1');
|
||||
$xw->writeAttribute('attr1', 'first');
|
||||
$xw->writeComment('start PI');
|
||||
$xw->startElement('pi');
|
||||
$xw->writePi('php', 'echo "hello world"; ');
|
||||
$xw->endElement();
|
||||
$xw->startElement('cdata');
|
||||
$xw->startCdata();
|
||||
$xw->endElement();
|
||||
$xw->text('<>&"');
|
||||
$xw->endCdata();
|
||||
$xw->endElement();
|
||||
$xw->endElement();
|
||||
$xw->endDocument();
|
||||
// Force to write and empty the buffer
|
||||
$output = $xw->flush(true);
|
||||
print $output;
|
||||
?>
|
||||
--EXPECT--
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<root id="elem1">
|
||||
<elem1 attr1="first">
|
||||
<!--start PI-->
|
||||
<pi><?php echo "hello world"; ?></pi>
|
||||
<cdata><![CDATA[<>&"]]></cdata>
|
||||
</elem1>
|
||||
</root>
|
Loading…
Reference in New Issue
Block a user