В моем XSLT я пытаюсь создать элементы внутри foreach и с помощью функции.Как вывести CDATA из вызова функции xsl: function?
<xsl:variable name="artistList" as="xs:string*"><xsl:apply-templates select="@artist"/></xsl:variable>
<xsl:for-each select="$artistList">
<xsl:comment select="."></xsl:comment>
<xsl:copy-of select="cst:createArtistEntity('artist', ., 'Artist_')" />
</xsl:for-each>
И сама функция следующая;
<xsl:function name="cst:createArtistEntity">
<xsl:param name="name" />
<xsl:param name="value" />
<xsl:param name="artistPrefix" />
<ChunkEntity>
<EntityType>Artist</EntityType>
<EntityReference><xsl:value-of select="cst-ext:digest(concat($artistPrefix, $value))" /></EntityReference>
<Column>
<Name><xsl:value-of select="$name"/></Name>
<Value>
<xsl:text disable-output-escaping="no"><![CDATA[</xsl:text>
<xsl:value-of select="$value" />
<xsl:text disable-output-escaping="no">]]></xsl:text>
</Value>
</Column>
</ChunkEntity>
</xsl:function>
Результат должен быть, как:
<ChunkEntity>
<EntityType>Artist</EntityType>
<EntityReference>b325f9fd1f0642c310c0168e061805f8</EntityReference>
<Column>
<Name>artist</Name>
<Value><![CDATA[Jon Bon Jovi]]></Value>
</Column>
</ChunkEntity>
Однако внутри моей Еогеасп и с использованием вызова функции, угловые скобки в CDATA сохраняются в >
и т.д. Когда я копирую код внутри функция прямо в петлю, все работает. Установка disable-output-escaping
в 'no' ничего не делает.
Таким образом, проблема заключается в том, что я использую функцию или копию, но я в замешательстве. У кого-нибудь есть идея?
DOE «нет» осталось от отладки. Но «последовательность» действительно работает. Спасибо огромное! Не могли бы вы объяснить, что здесь происходит? –
DOE: понимается. Последовательность: хороший вопрос: он ссылается на оригинал, а не на копирование; ответ обновлен. – kjhughes