Предположим, что ваш ввод XML:
<?xml version="1.0" encoding="UTF-8"?>
<Videos>
<Video videoID="v0001" imageLink="IMG/VIDEO_IMG/v0001_img.jpg"/>
<Video videoID="v0002" imageLink="IMG/VIDEO_IMG/v0002_img.jpg"/>
</Videos>
Тогда скрипт XSLT, выполняющий вашу задачу, может быть:
<?xml version="1.0" encoding="UTF-8" ?>
<xsl:transform xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="2.0">
<xsl:output method="xhtml" doctype-public="-//W3C//DTD XHTML 1.1//EN"
doctype-system= "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"
encoding="UTF-8" indent="yes" />
<xsl:template match="/">
<html>
<body>
<xsl:for-each select="Videos/Video">
<a href="VIDEOS/video_{@videoID}.xhtml">
<img class="User" src="../{substring-before(@imageLink, '.')}.png"
alt="VideoImage"/>
</a>
</xsl:for-each>
</body>
</html>
</xsl:template>
</xsl:transform>
Как видите, должно быть 2 Шаблоны значений атрибутов ({...}
), один выводит содержимое из атрибута источника videoID
, а другой - из imageLink
.
Во втором случае копируемое содержимое ограничиваетсячасть перед точкой, потому что в этом случае расширение имени файла отличается.
Обратите внимание, что я использовал method="xhtml"
и оба атрибута doctype
для страницы XHTML
.Возможно, в вашем случае они должны отличаться.
Рабочий пример см. http://xsltransform.net/jxWYjVH/1
Чтобы получить полную страницу HTML, добавьте тег <head>
и другие элементы HTML, в соответствии с вашими потребностями.Например, таблица стилей для User
класса.