Ответ 1
Атрибуты литеральных элементов результата поддерживают синтаксис шаблона значения атрибута, используя {}
:
<Party role="{some/xpath/path}">
Например, я хочу добавить атрибут к этому node:
<Party>
Итак, это будет выглядеть так:
<Party role="this should be set using XPath">
Значение атрибута должно появиться из XPath.
Следующие действия не будут выполняться:)
<Party role=<xsl:value-of select="some/xpath/path"/>>
Как это сделать?
Атрибуты литеральных элементов результата поддерживают синтаксис шаблона значения атрибута, используя {}
:
<Party role="{some/xpath/path}">
<xsl:template match="Party">
<Party role="{some/xpath/path}">
<xsl:apply-templates select="@* | node()"/>
</Party>
</xsl:template>
должен делать. В качестве альтернативы
<xsl:template match="Party">
<xsl:copy>
<xsl:attribute name="role" select="some/xpath/path"/>
<xsl:apply-templates select="@* | node()"/>
</xsl:copy>
</xsl:template>
Конечно, шаблоны применяются только в том случае, если есть атрибуты и/или дочерние узлы, которые вы также хотите обрабатывать (например, для копирования шаблоном преобразования идентификатора).
вы можете попробовать образец ниже:
<xsl:for-each select="YOUR_SELECT_PATH">
<a>
<Party> <xsl:attribute name="role"><xsl:value-of select="@source"/></xsl:attribute> </Party>
<xsl:value-of select="."/>
</a>
</xsl:for-each>
Здесь я устанавливаю роль атрибута в xml node Party.