gpt4 book ai didi

arrays - XSL : Construct an Array from a Delimited String

转载 作者:行者123 更新时间:2023-12-03 23:17:44 28 4
gpt4 key购买 nike

我有一个字符串,其中数据由分隔符分隔,如 "|"并且存在于一个变量中。
我想通过基于分隔符划分上述字符串在 XSL 中创建一个数组,并希望在 for 循环中访问相同的数组。

请在这方面帮助我。
如果有人需要更多信息,也请告诉我。

字符串是 "Test1|Test2|Test3|Test4"并想获得一个变量 TEMP这将是字符串中的数据数组,并希望以 TEMP[index] 访问.

我尝试在论坛成员的输入之后使用 tokenize 函数从字符串中获取值,但没有成功。我没有在循环中获取字符串值。

<xsl:variable name="temp" xmlns:str="http://exslt.org/strings" select="str:tokenize(normalize-space(' Test1$,$Test2$,$Test3$,$Test4 '),'$,$')"/>
<xsl:for-each xmlns:str="http://exslt.org/strings" select="str:split(normalize-space(' 1$,$2$,$3$,$4$,$5$,$6 '),'$,$')">
<xsl:variable name="index" select="position()"/>
<xsl:value-of select="$temp[$index]"/>
</xsl:for-each>

问候,
拉克什曼

最佳答案

String is "Test1|Test2|Test3|Test4" and would like to get a variable TEMP which would be an array of data from the string and would like to access as TEMP[index].



+1 一个好问题。

此 XSLT 1.0 转换 :
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:ext="http://exslt.org/common" exclude-result-prefixes="ext">
<xsl:output omit-xml-declaration="yes" indent="yes"/>

<xsl:variable name="vrtfTokens">
<xsl:apply-templates/>
</xsl:variable>

<xsl:variable name="vTokens" select=
"ext:node-set($vrtfTokens)/*"/>
<xsl:template match="/">
<xsl:for-each select=
"document('')//node()[not(position() > count($vTokens))]
">
<xsl:variable name="vPos" select="position()"/>
<xsl:copy-of select="$vTokens[$vPos+0]"/>
</xsl:for-each>
</xsl:template>

<xsl:template match="text()" name="split">
<xsl:param name="pText" select="."/>

<xsl:if test="string-length($pText)">
<xsl:variable name="vToken" select=
"substring-before(concat($pText,'|'), '|')"/>
<s><xsl:value-of select="$vToken"/></s>

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

应用于此 XML 文档时 :
<t>Test1|Test2|Test3|Test4</t>

创建一个变量 vTokens包含名为 s 的元素,每一个都有一个来自“|”分隔的字符串 "Test1|Test2|Test3|Test4" 的标记作为其唯一的文本子级.

然后转换输出这些 s 中的每一个使用“索引”的元素。

产生了想要的正确结果 :
<s>Test1</s>
<s>Test2</s>
<s>Test3</s>
<s>Test4</s>

如果我们只想要 token (字符串)本身,我们将使用:
string($vTokens[someIndex])

关于arrays - XSL : Construct an Array from a Delimited String,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8314688/

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