Я использую XSLT v1.0 и запускаю его через Microsoft Visual Studio.
У меня есть данные (которые будут отличаться в каждом узле), но структурирована так:
<ItemGroupData ItemGroupOID="DDG4">
<ItemDataString ItemOID="DDLOCC" AuditRecordID="AR.8452551">5,8,9,2,3</ItemDataString>
<ItemDataString ItemOID="DDLOCL" AuditRecordID="AR.8452551">1,7</ItemDataString>
<ItemDataString ItemOID="DDLOCR" AuditRecordID="AR.8452551">1</ItemDataString>
</ItemGroupData>
Может быть любое количество значений, разделенных запятыми в каждом из 3 полей.
Я пытаюсь разделить данные, чтобы я мог работать с каждым отдельным целым числом, и попробовал метод, предложенный Димитром Новатчевым здесь: функция разделения в xslt 1.0 , но она продолжает выдавать ошибку:
"'template' не является распознанным элементом расширения. Произошла ошибка в (0,0). ".
Новые созданные мной шаблоны разделения / пометки находятся внутри моего общего шаблона, который используется для преобразования моего XML в файл CSV.
Можно ли получить шаблонв шаблоне?Или мне нужно определить его вне основного шаблона?Бит N00b с XML, поэтому любая помощь будет принята с благодарностью.
Мои новые шаблоны (обратите внимание, бит processedItem
был упрощен для демонстрационных целей):
<xsl:template match="mark">
<xsl:variable name="vrtfSplit">
<xsl:apply-templates/>
</xsl:variable>
<xsl:for-each select="ext:node-set($vrtfSplit)/*">
<processedItem>
<xsl:if test="$varLOCOID='DDLOCL'">
<xsl:value-of select="current() * 100"/>
</xsl:if>
<xsl:if test="$varLOCOID='DDLOCC'">
<xsl:value-of select="current() * 10"/>
</xsl:if>
<xsl:if test="$varLOCOID='DDLOCR'">
<xsl:value-of select="current() * 150"/>
</xsl:if>
</processedItem>
</xsl:for-each>
</xsl:template>
<xsl:template match="text()" name="split">
<xsl:param name="pText" select="."/>
<xsl:if test="string-length($pText) > 0">
<item>
<xsl:value-of select="substring-before(concat($pText, ','), ',')"/>
</item>
<xsl:call-template name="split">
<xsl:with-param name="pText" select="substring-after($pText, ',')"/>
</xsl:call-template>
</xsl:if>
</xsl:template>