Используйте xsl:key
. Поскольку не совсем понятен вывод, который вам нужен, я предоставил вам только пример, показывающий, как получить title
из titles
для каждого page
в соответствии с языком страницы.
XSLT 1.0 протестировано под Saxon 6.5.5
<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:key name="titles" match="titles/*" use="local-name()"/>
<xsl:template match="/root">
<xsl:for-each select="page">
<xsl:value-of select="concat('title-',@title,key('titles',@title),'
')"/>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>
Применяется к этому входу
<?xml version="1.0" encoding="UTF-8"?>
<root>
<titles>
<en>A title</en>
<de>Ein Titel</de>
</titles>
<page title="de">
....
</page>
<page title="en">
....
</page>
</root>
1017 * * производит:
title-de:Ein Titel
title-en:A title
Протестировано на Mozilla Firefox 3.6.17 следующим образом:
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="test_trans.xsl"?>
<root>
<titles>
<en>A title</en>
<de>Ein Titel</de>
</titles>
<page title="de">
....
</page>
<page title="en">
....
</page>
</root>
Выдает
title-deEin Titeltitle-enA title
Очевидно, без новых строк, потому что мы отображаем его в браузере, и преобразование должно быть изменено для получения HTML.