Решение с помощью XLink
В XLink используются два типа связующих элементов (linking elements): simple (простой) - подобный "a" и "img" в HTML - и extended (расширенный). Однако, XLink не требует задания какого-либо определенного "корректного" имени для связей; наоборот, эта технология позволяет решить, какие элементы будут использоваться в качестве связей. Достигается это с помощью атрибута XLink type (тип). Приведенный ниже фрагмент иллюстрирует сказанное:
<environment xlink:type="extended"> <!-- Это расширенная связь --> <!-- Здесь должны быть включены/указаны задействованные ресурсы --> </environment>
После того, как мы объявили расширенную связь, необходимо указать задействованные ресурсы. Поскольку информация о художнике и его жизни хранится вне нашего документа (и, следовательно, мы не можем ею управлять), чтобы ссылаться на нее, воспользуемся элементами XLink, атрибуты которых имеют значение locator. Напомним еще раз, что подход заключается не в задании имени тега, а в том, чтобы с помощью атрибутов XLink позволить помечать элементы как элементы типа locator:
<environment xmlns:xlink="" xlink:type="extended"> <!-- Ресурсы, задействованные в нашей связи, - художник --> <!-- он сам, его наследие и периоды творчества --> <artist xlink:type="locator" xlink:label="artist" xlink:href="modigliani.xml"/> <influence xlink:type="locator" xlink:label="inspiration" xlink:href="cezanne.xml"/> <influence xlink:type="locator" xlink:label="inspiration" xlink:href="lautrec.xml"/> <influence xlink:type="locator" xlink:label="inspiration" xlink:href="rouault.xml"/> <history xlink:type="locator" xlink:label="period" xlink:href="paris.xml"/> <history xlink:type="locator" xlink:label="period" xlink:href="kisling.xml"/> </environment>
В этом примере упущен только один момент: необходимо указать, как ресурсы относятся друг к другу. Для этого используются атрибуты, значения которых равны arc:
<environment xmlns:xlink="" xlink:type="extended"> <!-- художник привязан к своему наследию и периодам творчества --> <artist xlink:type="locator" xlink:role="artist" xlink:href="modigliani.xml"/> <influence xlink:type="locator" xlink:label="inspiration" xlink:href="cezanne.xml"/> <influence xlink:type="locator" xlink:label="inspiration" xlink:href="lautrec.xml"/> <influence xlink:type="locator" xlink:label="inspiration" xlink:href="rouault.xml"/> <history xlink:type="locator" xlink:label="period" xlink:href="paris.xml"/> <history xlink:type="locator" xlink:label="period" xlink:href="kisling.xml"/> <bind xlink:type="arc" xlink:from="artist" xlink:to="inspiration"/>
<bind xlink:type="arc" xlink:from="artist" xlink:to="period"/>
</environment>
Нетрудно видеть, что использование XLink позволяет упростить нашу задачу и свести ее к созданию файла XML, содержащего элементы, подобные приведенным выше, где ясно и четко указаны все ресурсы и их отношения. Перейдем теперь к детальному рассмотрению механизма связывания XLink: атрибутов, их значений и правил их использования.