Мне нужно преобразовать следующее содержаниеLooping элемент для одного элемента в XSLT
<QTLS_ITEM>
<ID>123</ID>
<ID1>1345</ID1>
<SERAIL_NUMBER>102697704257</SERAIL_NUMBER>
<PROD_NAME>upgrade</PROD_NAME>
</QTLS_ITEM>
<QTLS_ITEM>
<ID>123</ID>
<ID1>1345</ID1>
<SERAIL_NUMBER>102697704257</SERAIL_NUMBER>
<PROD_NAME>Plugin</PROD_NAME>
</QTLS_ITEM>
<QTLS_ITEM>
<ID>123</ID>
<ID1>1345</ID1>
<SERAIL_NUMBER>102697704257</SERAIL_NUMBER>
<PROD_NAME>License</PROD_NAME>
</QTLS_ITEM>
Это зацикливание тип элемента. <QTLS_ITEM>
является повторяющимся элементом. Для каждого элемента я должен конкатенировать эти два поля и получить значение, как показано ниже.
Я хочу, чтобы превратить его в единый элемент, как
<Item_description>
102697704257 upgrade
102697704257 Plugin
102697704257 License
<Item_Description>
Что означает, что нужно сцепить как SERAIL_NUMBER
и PROD_NAME
.
Может ли кто-нибудь помочь в этом?
<xsl:template name="string-join">
<xsl:param name="nodes"/>
<xsl:param name="delimiter"/>
<xsl:for-each select="$nodes">
<xsl:value-of select="."/>
<xsl:if test="$nodes[position()!=last()-1]">
<xsl:value-of select="$delimiter"/>
</xsl:if>
</xsl:for-each>
</xsl:template>
Я использую это, чтобы получить порядковые номера, разделенные запятой. Но я хочу объединить и получить результат в вышеуказанном формате.
Ответ на моем случае
<xsl:template name="join">
<xsl:param name="list"/>
<xsl:param name="separator"/>
<xsl:for-each select="db:SERAIL_NUMBER | db:PROD_NAME">($list value)
<xsl:value-of select="."/>
<xsl:if test="position() != last()">
<xsl:value-of select="$separator"/>
</xsl:if>
</xsl:for-each>
</xsl:template>
Вы уверены, что вы можете использовать XSLT 2.0? Если да, зачем помечать вопрос XSLT 1.0? Кроме того, я не уверен, что означает «тип элемента looping». Вы группируете элементы 'QTLS_ITEM' с помощью' SUMMARY_ID'? –
Я изменил вопрос. Может, посмотрите сейчас. –