gpt4 book ai didi

.net - 使用 xslt 客户端拆分字符串

转载 作者:行者123 更新时间:2023-12-04 06:22:12 24 4
gpt4 key购买 nike

我需要在客户端用 xslt 1.0 分割一个逗号分隔的字符串......这样的事情可能吗?

我尝试了一种方法

Stackoverflow Solution

我在 Firefox 上收到一个错误,说它检测到递归并在那里停止。我的问题是我从我的 SQL 服务器以 XML 形式返回数据,并且有一个 1 对多的关系,1 个带有多个“标签”的博客文章记录 [即 #cars]。所以我将“标签”添加为 xml 标签内的逗号分隔字段,我想在客户端再次拆分它。或者,如果有某种方法可以简单地从 SQL Server XML 创建一个嵌套的字段列表,它也可以工作

即我可以返回而不是“汽车,红色,2010”

<tags>
<tag>cars</tag>
<tag>red</tag>
<tag>2010</tag>
</tags>

我在浏览器上使用 MS SQL Server 2008、ASP.NET 4.0 和 XSLT 1.0,所以这些是我可以使用的工具。提前致谢!

最佳答案

人们认为可以在服务器端生成 XML 是对的,但是如果您决定延迟生成,这里是如何在使用 XSLT1.0 的客户端上执行此操作 (XSLT 2.0 只能使用 XPath 2.0 标准函数 tokenize() ,但现在的浏览器并不直接支持 XSLT 2.0):

<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output omit-xml-declaration="yes" indent="yes"/>
<xsl:strip-space elements="*"/>

<xsl:template match="/*">
<tags>
<xsl:apply-templates/>
</tags>
</xsl:template>

<xsl:template match="text()" name="split">
<xsl:param name="pText" select="."/>
<xsl:param name="pDelim" select="', '"/>
<xsl:param name="pTagName" select="'tag'"/>

<xsl:if test="string-length($pText) >0">
<xsl:element name="{$pTagName}">
<xsl:value-of select=
"substring-before(concat($pText, $pDelim), $pDelim)"/>
</xsl:element>

<xsl:call-template name="split">
<xsl:with-param name="pText" select=
"substring-after($pText, $pDelim)"/>
<xsl:with-param name="pDelim" select="$pDelim"/>
<xsl:with-param name="pTagName" select="$pTagName"/>
</xsl:call-template>
</xsl:if>
</xsl:template>
</xsl:stylesheet>

当此转换应用于以下 XML 文档时 (您提供的字符串包含在顶部元素中,使其成为格式良好的 XML 文档,以便可以使用 XSLT 进行处理):
<t>cars, red, 2010</t>

产生了想要的、正确的结果 :
<tags>
<tag>cars</tag>
<tag>red</tag>
<tag>2010</tag>
</tags>

请注意 :这个解决方案的通用性——文本、分隔字符串和“标记名”都被指定为参数。

关于.net - 使用 xslt 客户端拆分字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6420937/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com