XSLT1. 0 поддержание количества дочерних узлов для генерации идентификатора
Я хочу сосчитать нет. дочерних узлов для конкретного повторяющегося родительского узла. Мне нужно, чтобы этот счетчик сохранял идентификатор для конкретного элемента после преобразования.
Ниже приведен формат запроса.xml, который у меня есть
<Party><Notes><Notes><Party>
<Party><Notes><Notes></Party>
Транформированный xml должен быть:
<Attachment id=1></Attachment>
<Attachment id=2></Attachment>
<Attachment id=3></Attachment>
<Attachment id=4></Attachment>
Я попробовал использовать :
<xsl:value-of select="concat('Attachment',count(preceding-sibling::Notes))" />
Но это не дает правильных значений. Любое руководство поможет мне решить эту проблему.
1 ответ:
Вы можете использовать
count(preceding::Notes)+1
, но я предпочитаю использоватьxsl:number
.Пример...
XML (исправлено, чтобы быть хорошо сформированным)
<request> <Party> <Notes/> </Party> <Party> <Notes/> </Party> </request>
XSLT 1.0
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:output indent="yes"/> <xsl:strip-space elements="*"/> <xsl:template match="Notes"> <Attachment> <xsl:attribute name="id"> <xsl:number level="any"/> </xsl:attribute> </Attachment> </xsl:template> </xsl:stylesheet>
Вывод
<Attachment id="1"/> <Attachment id="2"/>