Я пытаюсь заново создать XSLT, который я не написал, чтобы распределить рабочие роли в разных строках с собственными тегами.
Код в настоящее время показывает всю строку с точками с запятой
<xsl:value-of select="Properties/Property[Name='accountability']/Value" />
в настоящее время производит
<Consulted>viewpoint manager;design management lead;bim specialist</Consulted>
Я попытался отредактировать код, добавив рекурсивный тест, который я взял из другого поста, но он не дает вывода. Я пытался использовать прямую точку с запятой, ASCII и шестнадцатеричные символы, но безуспешно
Вот код XSLT-1.0:
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" />
<xsl:template match="/">
<RolesData>
<Activities>
<xsl:apply-templates select="XmlCatalogue/File/Map/MapPages/MapPage/Activities/Activity">
<xsl:sort select="Level" order="ascending" />
<xsl:sort select="Name" order="ascending" />
</xsl:apply-templates>
</Activities>
</RolesData>
</xsl:template>
<xsl:template name="tokenize">
<xsl:param name="text"/>
<xsl:param name="sep" select="';'"/>
<xsl:choose>
<xsl:when test="contains($text, $sep)">
<!-- recursive call -->
<xsl:call-template name="tokenize">
<xsl:with-param name="text" select="substring-after($text, $sep)" />
</xsl:call-template>
</xsl:when>
</xsl:choose>
</xsl:template>
<xsl:template match="Activity">
<Activity>
<Consulted>
<xsl:call-template name="tokenize">
<xsl:with-param name="text" select="Properties/PropertyName='consulted']/Value"/>
</xsl:call-template>
</Consulted>
</Activity>
</xsl:template>
</xsl:stylesheet>