Здесь вы смешиваете синтаксис XInclude, XSLT и ad-hoc {$var}
(не является частью XML). Что вы можете сделать для параметризации значения href
в элементах XInclude, так это использовать ссылку на сущность (помимо прочего, XML и SGML-механизм для подстановки текстовых переменных):
<xi:include href="&href-value;"/>
где href-value
должен быть привязан к строке long/common/part/of/partial/xml/file1
либо программно, либо (предпочтительно) путем объявления его в прологе, например:
<!DOCTYPE tag1 [
<!ENTITY href-value "long/common/part/of/partial/xml/file1">
]>
<tag1>
<xi:include href = "&href-value;"/>
</tag1>
Однако, так как теперь вы все равно используете ссылки на сущности, вы можете достичь того же самого с помощью только сущностей и вообще без XInclude:
<!DOCTYPE tag1 [
<!ENTITY common-part SYSTEM "long/common/part/of/partial/xml/file1">
]>
<tag1>
&common-part;
</tag1>
Это вытягивает содержимое long / common / part / of / частичного / xml / file1 в сущность common-part
, а затем ссылается на это значение в содержимом, а синтаксический анализатор XML обрабатывает документ как значение замены для common-part
(например, все, что хранится в long/common/part/of/partial/xml/file1
) было указано непосредственно в документе.
Надеюсь, это не слишком запутанно; в этом ответе есть общее объяснение того, как работают сущности в XML и SGML