Следует читать <xsl:for-each select="attachment">...
. Знак $
отсутствует, поскольку attachment
- это имя элемента XML, а не переменной.
РЕДАКТИРОВАТЬ после того, как вы дали полный XSLT и XML.
Есть несколько проблем с вашим XML:
- Все теги должны быть закрыты.
- Вы не можете использовать
xmlns
для чего-либо еще, для чего он предназначен - пространства имен.
- Вы должны иметь двойные кавычки вокруг значений атрибута
Таким образом, правильная версия XML-файла будет (например):
<root>
<attachment ptr="file1" />
<attachment ptr="file2" />
</root>
Файл XSLT также имеет некоторые проблемы:
- Пространство имен
xsl
должно быть связано с точным URI http://www.w3.org/1999/XSL/Transform
.
- У вас должен быть как минимум шаблон , чтобы преобразование XSLT обрабатывало ваш входной XML-документ.
Правильная версия будет, например:
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/root">
<xsl:for-each select="attachment">
<a target="_blank" href="{@ptr}"><xsl:value-of select="@ptr" /></a>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>
Я не уверен, что это именно то, что вы хотите, но для приведенного выше документа он производит следующий фрагмент:
<a target="_blank" href="file1">file1</a>
<a target="_blank" href="file2">file2</a>