I.Вот как любой документ или фрагмент XML может быть встроен в таблицу стилей XSLT и использован во время преобразования :
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:my="my:my">
<xsl:output omit-xml-declaration="yes" indent="yes"/>
<xsl:strip-space elements="*"/>
<my:menu>
<menu>
<choice>A</choice>
<choice>B</choice>
<choice>C</choice>
</menu>
</my:menu>
<xsl:template match="/">
<xsl:copy-of select="document('')/*/my:menu/*"/>
</xsl:template>
</xsl:stylesheet>
Когда это преобразование применяется к любому документу XML (не используется в этомпример), желаемый результат (просто копирование XML) получается :
<menu xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:my="my:my">
<choice>A</choice>
<choice>B</choice>
<choice>C</choice>
</menu>
Помните : любой XML может быть встроен в таблицу стилей XSLT при условии, что он обернут вэлемент пространства имен (пространство имен, а не пространство имен XSLT), и этот элемент переноса находится на глобальном уровне (дочерний элемент <xsl:stylesheet>
(верхний) элемент).
II.Доступ к файлу меню XML, который находится в отдельном файле XML :
. Для этого нам нужно лишь немного изменить предыдущий пример:
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output omit-xml-declaration="yes" indent="yes"/>
<xsl:strip-space elements="*"/>
<xsl:template match="/">
<xsl:copy-of select="document('menu.XML')/*"/>
</xsl:template>
</xsl:stylesheet>
Если менюФайл XML находится в файле 'menu.XML'
(в том же каталоге, что и файл таблицы стилей XSLT, тогда это преобразование дает точно такой же результат , что и предыдущий:
<menu>
<choice>A</choice>
<choice>B</choice>
<choice>C</choice>
</menu>
Заметьте : в обоих случаях мы используем стандартную функцию XSLT document()
Как правило, определяется переменная глобального уровня, значение которой является результатомвызов функции document()
. Затем эта переменная и ее содержимое доступны через выражения XPath во время преобразования.