XML - статьи

         

Внешние связи


Как было указано выше, расширенные связи также могут быть и внешними связями. Внешняя связь не содержит какой-либо части любых ресурсов, которые она соединяет, а хранится в отдельном документе, называемом базой связей (linkbase).

Так, список "сайтов-зеркал", приведенный в последнем примере, мог бы храниться в отдельном файле на Web-сервере в определенном месте, где его могли отыскивать браузеры, чтобы запросить местонахождение ближайшего "зеркала", которое они ищут.

В качестве еще одного примера рассмотрим некий учебный курс по Java, публикуемый на Web-сайте. На рисунке 3 показана вводная страница этого курса. Этот курс состоит из 13 занятий (недель - week), каждое из которых охватывает от 30 до 60 страниц лекционного текста. Страница оглавления для каждого занятия включает связи с каждой такой страницей теста, читаемого на занятии.



Рис. 3.



Каждая из нескольких сотен станиц, образующих весь этот учебный курс, имеет связи с предыдущим документом (Previous link), следующим документом (Next link) и оглавлением (Top link) для каждого занятия (см. рисунок 4). Если попытаться грубо оценить этот проект, то в нем оказывается задействованным более тысячи внутренних соединений, охватывающих все эти документы.



Рис. 4.



При увеличении числа документов возможные внутренние соединения будут расти по экспоненциальной зависимости. Всякий раз, как какой-то документ будет удален, переименован или разбит на несколько частей, необходимо вносить соответствующие изменения в связи на этой странице, на странице перед ней и после нее в этой "тройке", а также в оглавлении для занятия. Очевидно, такая работа может отбить всякую охоту что-либо менять.

Разумное решение - если бы HTML позволяло это - хранить эти связи в отдельном документе. Тогда страницы можно было бы переструктурировать, редактируя этот единственный документ. Такой документ описывал бы связи между главной страницей и отдельными занятиями и, наоборот:

<COURSE xmlns:xlink="http://www.w3.org/1999/xlink" xlink:type="extended"> <TOC xlink:type="locator" xlink:href="index.xml" xlink:label="index"/> <CLASS xlink:type="locator" xlink:href="week1.xml" xlink:label="class"/> <CLASS xlink:type="locator" xlink:href="week2.xml" xlink:label="class"/>


&lt!- Список аналогичных элементов -->

xlink:label="class"/> <CLASS xlink:type="locator" xlink:href="week13.xml" xlink:label="class"/> <CONNECTION xlink:type="arc" from="index" to="class"/> <CONNECTION xlink:type="arc" from="class" to="index"/> </COURSE>

В следующем примере приведена еще одна возможная внешняя расширенная связь. Она обеспечивает предыдущую (previous) и следующую (next) связи между указанными тринадцатью занятиями:

<COURSE xmlns:xlink="http://www.w3.org/1999/xlink" xlink:type="extended"> <CLASS xlink:type="locator" xlink:href="week1.xml" xlink:label="1"/> <CLASS xlink:type="locator" xlink:href="week2.xml" xlink:label="2"/>

&lt!- Список аналогичных элементов -->

<CLASS xlink:type="locator" xlink:href="week13.xml" xlink:label="13"/>

<!-- Связи с предыдущим документом --> <CONNECTION xlink:type="arc" xlink:from="2" xlink:to="1"/> <CONNECTION xlink:type="arc" xlink:from="3" xlink:to="2"/>

&lt!- Список аналогичных элементов -->

<CONNECTION xlink:type="arc" xlink:from="13" xlink:to="12"/>

<!-- связи со следующим документом --> <CONNECTION xlink:type="arc" xlink:from="1" xlink:to="2"/> <CONNECTION xlink:type="arc" xlink:from="2" xlink:to="3"/>

&lt!- Список аналогичных элементов -->

<CONNECTION xlink:type="arc" xlink:from="12" xlink:to="13"/> </COURSE>

Ниже приведен код, в котором один из элементов типа arc содержит атрибут xlink:arcrole, значение которого равно . Атрибут xlink:to этого элемента типа arc должен идентифицировать элемент типа locator, который дает URL этой базы связей. Атрибут xlink:actuate элемента типа arc определяет, загружаются ли эти связи автоматически или для этого требуется пользовательский запрос. Например, если приведенные выше два примера кода находились бы в файле по URL , этот элемент мог бы быть включен в основную страницу для лекций по курсу Java:

<LINKBASE xlink:type="xlink:extended" xmlns:xlink="http://www.w3.org/1999/xlink"> <SOURCE xlink:type="resource" xlink:label="source"/> <LINKS xlink:type="locator" xlink:label="linkbase" xlink:href= "http://ibiblio.org/javafaq/course/courselinks.xml"/> <LOAD xlink:type="arc" xlink:arcrole= "http://www.w3.org/1999/xlink/properties/linkbase" xlink:from="source" xlink:to="linkbase" xlink:actuate="onLoad" /> </LINKBASE>


Содержание раздела