Как получить ссылку на xml файл

Обновлено: 07.07.2024

Я новичок в XML, так что это может быть довольно простой вопрос для ответа. Мне было интересно, существует ли стандартный способ ссылки на внешние XML файлы из других XML файлов. Позвольте мне привести пример. Скажем, у вас есть файл, который определяет один объект, который содержит большой объем данных:

Ради этого вопроса притворяйтесь, что человек содержит множество другой информации. Представьте, что файл похож на 10 МБ.

Теперь скажем, у вас есть еще один XML файл, который определяет группу:

Как вы можете видеть, если Person был очень большим, файл группы был бы чрезвычайно большим. Итак, если у нас есть что-то вроде John.xml, есть ли стандартный способ ссылаться на него в Group.xml без явного определения всех данных Джона? Я уверен, что это очень широкая тема, поэтому не стесняйтесь связывать меня с любыми релевантными веб-страницами. Спасибо!

Стандарты

XInclude является единственным стандартом с любым уровнем поддержки.

Есть несколько хороших примеров использования в статье Википедии о XInclude.

Альтернативы

Если вы беспокоитесь о размере, есть несколько способов:

  • Используйте потоковый XML-процессор, например DataDirect XQuery (или, в меньшей степени, Saxon 9.3 EE, который хранит столько информации в памяти, сколько необходимо для решения запроса.
  • Используйте XML-базу данных, такую ​​как MarkLogic или eXist.
  • Используйте один XML файл, чтобы перечислить имена других XML файлов, которые некоторые программы, написанные в XQuery или XSLT, затем читаются с использованием функции doc() и процессов. (Если ваш процессор не работает или имеет способ избавиться от документов, он завершен с помощью DDXQ или Saxon, вы все равно столкнетесь с такой же проблемой размера.)

Существует несколько стандартных способов сделать то, что вы хотите, а именно XLink и XInclude (в зависимости от того, что вы хотите сделать), хотя вы должны убедиться, что у вас есть процессор, который может использовать внешние ссылки. Большинство библиотек XML не поставляются с этой функциональностью, уже включенной.

Тогда вы сможете сделать что-то как:

Даже при использовании DOM я не стал рассматривать проблемы с большими документами, пока они не были в диапазоне десятков мегабайт.

Простой документ вроде:

расширит исходный документ до:

Я считаю, что неэквивалентные синтаксические анализаторы XML не требуют расширения ссылок, поэтому будьте осторожны.

Нет стандарта (будет работать в каждом парсере) для импорта таких узлов. Но вы можете сэкономить место, изменив некоторые элементы в атрибутах

XLink определяет методы создания ссылок внутри XML документов.

Как используется XLink

  • XLink используется для создания гиперссылок внутри XML документов
  • Любой элемент XML документа может вести себя как ссылка
  • XLink поддерживает простые ссылки (как HTML) и расширенные ссылки (для связывания нескольких ресурсов)
  • При помощи XLink ссылки могут определяться за пределами связанных файлов
  • XLink является стандартом W3C

Синтаксис XLink

В HTML гиперссылки определяются при помощи элемента <a>. В XML же это работать не будет. В XML документах разрешено использовать элементы с любыми именами, таким образом браузеры не могут знать заранее, какие элементы в XML документах используются в качестве ссылок.

Ниже приводится простой пример использования XLink для создания ссылок в XML документе:

Чтобы иметь возможность использовать XLink, мы должны декларировать пространство имен XLink. Пространством имен XLink является: "http://www.w3.org/1999/xlink".

Атрибуты xlink:type и xlink:href в элементе <homepage> берутся из пространства имен XLink.

Атрибут xlink:type="simple" создает простую "HTML-подобную" ссылку (означает "нажмите сюда, чтобы перейти туда").

Атрибут xlink:href определяет URL ссылки.

Поддержка XLink браузерами

Браузеры не имеют поддержки XLink в XML документах. Тем не менее, все основные браузеры поддерживают простые XLink в SVG.

Пример XLink

Следующий XML документ содержит функционал XLink:

Написано же здесь следующее:

  • В начале документа декларируется пространство имен XLink (xmlns:xlink="http://www.w3.org/1999/xlink")
  • Атрибут xlink:type="simple" создает простую "HTML-подобную" ссылку
  • Атрибут xlink:href определяет URL ссылки (в данном случае - изображение)
  • Атрибут xlink:show="new" определяет, что ссылка должна открываться в новом окне

XLink – Идем дальше

В примере выше были продемонстрированы простые ссылки XLink. Однако XLink становится интереснее, когда необходимо создать доступ к удаленный ресурсам, а не к отдельным страницам.

Если установить атрибуту xlink:show значение "embed", то ресурс, на который создается ссылка, будет встроен в код страницы. Если создается такая ссылка на другой XML документ, то появляется возможность создавать иерархию XML документов.

Также, вы можете определять то, когда ресурс должен отображаться. За это отвечает атрибут xlink:actuate.

Я новичок в XML, так что это может быть довольно простой вопрос для ответа. Мне было интересно, существует ли стандартный способ ссылки на внешние XML файлы из других XML файлов. Позвольте мне привести пример. Скажем, у вас есть файл, который определяет один объект, который содержит большой объем данных:

Ради этого вопроса притворяйтесь, что человек содержит множество другой информации. Представьте, что файл похож на 10 МБ.

Теперь скажем, у вас есть еще один XML файл, который определяет группу:

Как вы можете видеть, если Person был очень большим, файл группы был бы чрезвычайно большим. Итак, если у нас есть что-то вроде John.xml, есть ли стандартный способ ссылаться на него в Group.xml без явного определения всех данных Джона? Я уверен, что это очень широкая тема, поэтому не стесняйтесь связывать меня с любыми релевантными веб-страницами. Спасибо!

Стандарты

XInclude является единственным стандартом с любым уровнем поддержки.

Есть несколько хороших примеров использования в статье Википедии о XInclude.

Альтернативы

Если вы беспокоитесь о размере, есть несколько способов:

  • Используйте потоковый XML-процессор, например DataDirect XQuery (или, в меньшей степени, Saxon 9.3 EE, который хранит столько информации в памяти, сколько необходимо для решения запроса.
  • Используйте XML-базу данных, такую ​​как MarkLogic или eXist.
  • Используйте один XML файл, чтобы перечислить имена других XML файлов, которые некоторые программы, написанные в XQuery или XSLT, затем читаются с использованием функции doc() и процессов. (Если ваш процессор не работает или имеет способ избавиться от документов, он завершен с помощью DDXQ или Saxon, вы все равно столкнетесь с такой же проблемой размера.)

Существует несколько стандартных способов сделать то, что вы хотите, а именно XLink и XInclude (в зависимости от того, что вы хотите сделать), хотя вы должны убедиться, что у вас есть процессор, который может использовать внешние ссылки. Большинство библиотек XML не поставляются с этой функциональностью, уже включенной.

Тогда вы сможете сделать что-то как:

Даже при использовании DOM я не стал рассматривать проблемы с большими документами, пока они не были в диапазоне десятков мегабайт.

Простой документ вроде:

расширит исходный документ до:

Я считаю, что неэквивалентные синтаксические анализаторы XML не требуют расширения ссылок, поэтому будьте осторожны.

Нет стандарта (будет работать в каждом парсере) для импорта таких узлов. Но вы можете сэкономить место, изменив некоторые элементы в атрибутах

Загрузка и выгрузка XML-документов через DOM

В предыдущей статье мы рассмотрели стандарт DOM. И в этой статье мы с Вами будем его применять с использованием языка PHP. И начнём с самого простого: загрузки и выгрузки XML-документа с использованием DOM.

Основной класс, который мы будем использовать, это domDocument. Через него можно создавать новые документы, сохранять их, а также загружать существующие. Давайте с Вами разберём его на примере:

<?php
$dom = new domDocument("1.0", "utf-8"); // Создаём XML-документ версии 1.0 с кодировкой utf-8
/* Текст XML-документа */
$xml ;
$dom->loadXML($xml); // Загружаем в объект domDocument XML-разметку
echo htmlspecialchars($dom->saveXML()); // Выгрузка в окно браузера XML-документа
echo "<br />"; // Переход на новую строку
$dom->save("doc.xml"); // Сохраняем XML-документ в файл
$dom->load("doc.xml"); // Выгружаем из файла XML-документ
echo htmlspecialchars($dom->saveXML()); // Выгрузка в окно браузере XML-документа (уже из файла)
?>

Главное, что Вы должны усвоить из данного кода - это то, как можно сохранять XML-документы в файл и загружать из этих файлов обратно в объект domDocument. Это самое основное, что постоянно используется практически везде, где вообще имеются XML-файлы.


Если Вы не хотите пропустить новые материалы на сайте,
то Вы можете подписаться на обновления: Подписаться на обновления

Если у Вас остались какие-либо вопросы, либо у Вас есть желание высказаться по поводу этой статьи, то Вы можете оставить свой комментарий внизу страницы.

Порекомендуйте эту статью друзьям:

Если Вам понравился сайт, то разместите ссылку на него (у себя на сайте, на форуме, в контакте):

Она выглядит вот так:

Комментарии ( 4 ):

Ошибка в примере. ПХП код не в своей скорлупе, <?php ?>

Михаил, а чем различаются версии xml документов?

От этого зависит то, как он будет интерпретироваться.

Читайте также: