Tôi có chuỗi đầu vào có giá trị csv. Ví dụ: 1,2,3 Tôi sẽ cần phải tách riêng từng giá trị và gán cho nút đích trong vòng lặp for-each.XSLT phân tách chuỗi phân cách bằng dấu phẩy cho nút cho mỗi nút
Tôi nhận mẫu dưới đây chia tách chuỗi đầu vào dựa trên dấu phân cách. Làm thế nào tôi có thể gán từng giá trị phân cách cho phần tử đích trong vòng lặp for-each.
<xsl:template name="output-tokens">
<xsl:param name="list"/>
<xsl:param name="delimiter"/>
<xsl:variable name="newlist">
<xsl:choose>
<xsl:when test="contains($list, $delimiter)">
<xsl:value-of select="normalize-space($list)"/>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="concat(normalize-space($list), $delimiter)"/>
</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<xsl:variable name="first" select="substring-before($newlist, $delimiter)"/>
<xsl:variable name="remaining"
select="substring-after($newlist, $delimiter)"/>
<xsl:variable name="count" select="position()"/>
<num>
<xsl:value-of select="$first"/>
</num>
<xsl:if test="$remaining">
<xsl:call-template name="output-tokens">
<xsl:with-param name="list" select="$remaining"/>
<xsl:with-param name="delimiter">
<xsl:value-of select="$delimiter"/>
</xsl:with-param>
</xsl:call-template>
</xsl:if>
</xsl:template>
Input xml:
<out1:AvailableDates>
<out1:AvailableDate>15/12/2011,16/12/2011,19/12/2011,20/12/2011,21/12/2011</out1:AvailableDate>
</out1:AvailableDates>
Dự kiến Output:
<tns:AvailableDates>
<tns:AvailableDate>15/12/2011</tns:AvailableDate>
<tns:AvailableDate>16/12/2011</tns:AvailableDate>
<tns:AvailableDate>120/12/2011</tns:AvailableDate>
</tns:AvailableDates>
Cảm ơn bạn rất nhiều. Tuyệt vời – Arun
@Arun: Tôi rất vui vì câu trả lời của tôi hữu ích. Bạn có thể, vui lòng đánh dấu câu trả lời là được chấp nhận (nhấp vào dấu kiểm bên cạnh câu trả lời)? Đây là cách thức bày tỏ lòng biết ơn chính thức tại SO. –
Chắc chắn. Trong XSL của tôi, tôi nhận được mesage: và là các thành phần được phép duy nhất cho phép trong XSL. Khi tôi sử dụng –
Arun