Кажется, не получается заставить генерируемый идентификатор работать в XSLT - PullRequest
2 голосов
/ 11 марта 2011

В операторе for-each я хочу сгенерировать идентификаторы для каждого соответствующего узла.

Для некоторого файла XML:

<event attr1="qwertz">
  <test>Test</test>
</event>
<event attr1="asdfg">
  <test>Test</test>
</event>

... и следующего правила:

<xsl:for-each select="event">
  <xsl:element name="event">
    <xsl:attribute name="id">id/{generate-id(test)}</xsl:attribute>
  </xsl:element>
</xsl:for-each>

Я всегда получаю что-то вроде этого:

<event id="id/generate-id(test)"/>
<event id="id/generate-id(test)"/>
<event id="id/generate-id(test)"/>
...

Какой правильный синтаксис для вызова этой функции в XSLT?Заранее спасибо!

1 Ответ

2 голосов
/ 11 марта 2011

Использование:

<event id="id/{generate-id(test)}"/>

Или подробное описание:

<xsl:element name="event">
    <xsl:attribute name="id">
        <xsl:text>id/<xsl:text>
        <xsl:value-of select="generate-id(test)"/>
    </xsl:attribute>
</xsl:element>

Примечание : шаблоны значений атрибутов предназначены только для литеральных элементов результата и только некоторых атрибутов XSLTинструкции.

...