Какой лучший код Php для загрузки XML-файла с правильным синтаксисом XInclude (с XPointer) и рекурсивного включения XML?
Пример (синтаксис Xinclude должен быть правильным): index.xml включает в себя legal /sitemap.xml:
<?xml version="1.0" encoding="UTF-8"?>
<urlset>
<url>
<loc>/privacy/</loc>
<query>/?template=home&content=home</query>
</url>
<xi:include href="legal/sitemap.xml" xpointer="xpointer(//urlset/*)"/>
</urlset>
legal / sitemap.xml включает значение узла legal / cookies.xml
<urlset>
<url>
<loc>/cookies/</loc>
<query>/?template=page&content=cookies</query>
<lastmod><xi:include href="cookies.xml" xpointer="xpointer(//*[1]/datePublished/text())"/></lastmod>
</url>
</urlset>
legal / cookies.xml
<?xml version="1.0" encoding="UTF-8"?>
<section xml:id="php" class="page">
<title>Cookies</title>
<datePublished>2018-11-28T12:02:41Z</datePublished>
</section>
Вывести полный код XML с включениями 1-го и 2-го уровня.
<?xml version="1.0" encoding="UTF-8"?>
<urlset>
<url>
<loc>/privacy/</loc>
<query>/?template=home&content=home</query>
<lastmod>2017-11-29T12:02:30Z</lastmod>
</url>
<url>
<loc>/cookies/</loc>
<query>/?template=page&content=cookies</query>
<lastmod>2018-11-28T12:02:41Z</lastmod>
</url>
</urlset>
PHP DOMDocument :: xinclude правильно анализирует включает в себя 1-й уровень (т. Е. Index.xml включает в себя legal / sitemap.xml), но не анализирует> включает в себя 2-й уровень (значение узла legal / cookies.xml не анализируется, сохраняя 'xi: include' в legal / sitemap.xml).Это вывод:
<?xml version="1.0" encoding="UTF-8"?>
<urlset>
<url>
<loc>/privacy/</loc>
<query>/?template=home&content=home</query>
<lastmod><xi:include href="cookies.xml" xpointer="xpointer(//*[1]/datePublished/text())"/></lastmod>
</url>
<url>
<loc>/cookies/</loc>
<query>/?template=page&content=cookies</query>
<lastmod>2018-11-28T12:02:41Z</lastmod>
</url>
</urlset>
Синтаксический анализ два раза с помощью $ DOMDocument-> xinclude (); 'возвращает тот же вывод.