|
DomDocument->xinclude
Substitutes XIncludes in a DomDocument Object
()
Example 554. Substituting Xincludes<?php The above example will output: <?xml version="1.0"?>
If <?xml version="1.0"?> Related Examples ( Source code ) » domdocument xinclude Examples ( Source code ) » Example of DOMDocument->normalize() Examples ( Source code ) » DOMDocument->getElementsByTagName() Examples Code Examples / Notes » domdocument xincludeamm
xml Include using xpointer to include specific part of another xml doc Main xml file (or string): <?xml version="1.0" encoding="utf-8"?> <root xmlns:xi="http://www.w3.org/2001/XInclude"> <optional> <xi:include href="include.xml#xpointer(/parts/*)" parse="xml"> <xi:fallback> <error>Error.</error> </xi:fallback> </xi:include> </optional> <blah>blah</blah> <blah>blah</blah> </root> Include.xml file (or string: <?xml version="1.0" encoding="utf-8"?> <parts> <part>part one</part> <part>part two</part> <part>part three</part> </parts> href="include.xml#xpointer(/parts/*)" will include all <part> tags but NOT <parts> href="include.xml#xpointer(/parts/part[1])" will include <part>part one</part> simple but very usefull. www dot spam
Tips for anyone trying to use nested <xi:include /> blocks: - Multiple calls to DOMDocument::xinclude() are required to parse each level of include blocks, you can either call xinclude() a fixed amount of times (enough to cover your needs), or you can check for leftover <xi:include /> blocks after each call to DOMDocument::xinclude() to see if you need to call it again. - If you are going to use an <xi:include /> block in an included file, you must define the "xi" namespace in the included file where another include block exists, the namespace definition will not carry through from the first xml file eg. ========== a.xml (xi definition needed) ---------- <?xml version="1.0"?> <a xmlns:xi="http://www.w3.org/2001/XInclude"> <xi:include href="includes/b.xml" /> </a> ========== ========== b.xml (xi definition needed) ---------- <?xml version="1.0"?> <b xmlns:xi="http://www.w3.org/2001/XInclude"> <xi:include href="c.xml" /> </b> ========== ========== c.xml (xi definition not needed) ---------- <?xml version="1.0"?> <c>whatever</c> ========== - Futher to my example above, if you are including an xml file that has another include inside it, the href "base" url will be taken from the 2nd file. In the above example, "c.xml" is actually in the same directory as "b.xml", whereas "a.xml" is in the directory above, but because b is calling c, the "base" directory is seen as "includes/" Another tip not related to nested xincludes, but simply xinclude stuff in general: I wanted to turn this... <a> <b /> <c /> <d /> <e /> </a> ...into this... <a> <xi:include file="bcde.xml" /> </a> ...but then bcde.xml would have looked like this... <b /> <c /> <d /> <e /> ...which is not valid xml and was causing an error. So just remember that included files need to be valid and may still only have one root element. These are from my experiences with PHP5.0.1, I'm not a DOMXML expert at all. Enjoy! |
Change LanguageDomAttribute->name DomAttribute->set_value DomAttribute->specified DomAttribute->value DomDocument->add_root DomDocument->create_attribute DomDocument->create_cdata_section DomDocument->create_comment DomDocument->create_element_ns DomDocument->create_element DomDocument->create_entity_reference DomDocument->create_processing_instruction DomDocument->create_text_node DomDocument->doctype DomDocument->document_element DomDocument->dump_file DomDocument->dump_mem DomDocument->get_element_by_id DomDocument->get_elements_by_tagname DomDocument->html_dump_mem DomDocument->xinclude DomDocumentType->entities() DomDocumentType->internal_subset() DomDocumentType->name() DomDocumentType->notations() DomDocumentType->public_id() DomDocumentType->system_id() DomElement->get_attribute_node() DomElement->get_attribute() DomElement->get_elements_by_tagname() DomElement->has_attribute() DomElement->remove_attribute() DomElement->set_attribute_node() DomElement->set_attribute() DomElement->tagname() DomNode->add_namespace DomNode->append_child DomNode->append_sibling DomNode->attributes DomNode->child_nodes DomNode->clone_node DomNode->dump_node DomNode->first_child DomNode->get_content DomNode->has_attributes DomNode->has_child_nodes DomNode->insert_before DomNode->is_blank_node DomNode->last_child DomNode->next_sibling DomNode->node_name DomNode->node_type DomNode->node_value DomNode->owner_document DomNode->parent_node DomNode->prefix DomNode->previous_sibling DomNode->remove_child DomNode->replace_child DomNode->replace_node DomNode->set_content DomNode->set_name DomNode->set_namespace DomNode->unlink_node DomProcessingInstruction->data DomProcessingInstruction->target DomXsltStylesheet->process() DomXsltStylesheet->result_dump_file() DomXsltStylesheet->result_dump_mem() domxml_new_doc domxml_open_file domxml_open_mem domxml_version domxml_xmltree domxml_xslt_stylesheet_doc domxml_xslt_stylesheet_file domxml_xslt_stylesheet domxml_xslt_version xpath_eval_expression xpath_eval xpath_new_context xpath_register_ns_auto xpath_register_ns xptr_eval xptr_new_context |