gpt4 book ai didi

XSLT 1.0 : string into array variable

转载 作者:行者123 更新时间:2023-12-04 02:15:53 26 4
gpt4 key购买 nike

我有一个变量如下:

<xsl:variable name="ARRAY">
One,Two,Three,Four
</xsl:variable>

在 XSLT 2.0 中,我使用了标记化函数并设置了一个数组变量:

<xsl:variable name="tokenizedSample" select="tokenize($ARRAY,',')"/>

并获取数组值:

<xsl:value-of select="$tokenizedSample[1]"/>

不幸的是我必须使用 XSLT 1.0 并且我不知道如何替换这种情况...我找到了一些创建模板的示例,如下所示:

 <xsl:template name="SimpleStringLoop">
<xsl:param name="input"/>
<xsl:if test="string-length($input) &gt; 0">
<xsl:variable name="v" select="substring-before($input, ',')"/>
<field>
<xsl:value-of select="$v"/>
</field>
<xsl:call-template name="SimpleStringLoop">
<xsl:with-param name="input" select="substring-after($input, ',')"/>
</xsl:call-template>
</xsl:if>
</xsl:template>

并如下调用此模板:

        <xsl:variable name="fields">
<xsl:call-template name="SimpleStringLoop">
<xsl:with-param name="input" select="$ARRAY"/>
</xsl:call-template>
</xsl:variable>

并通过以下方式访问这个新数组:

<xsl:value-of select="$fields[1]"/>

但不起作用。

我该怎么办?

我想要一个 XSLT 1.0 变量作为数组,因为我想用例如读取它:

$newArray[1]

谢谢。

最佳答案

我不明白您为什么要定义一个需要标记化的变量,而不是一开始就将其定义为“标记化”。

在 XSLT 1.0 中,可以这样做:

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:my="http://www.example.com/my"
exclude-result-prefixes="my">
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>

<my:items>
<item>One</item>
<item>Two</item>
<item>Three</item>
<item>Four</item>
</my:items>

<!-- the rest of the stylesheet -->

</xsl:stylesheet>

有了这个,你可以做:

<xsl:value-of select="document('')/xsl:stylesheet/my:items/item[2]"/>

从样式表中的任何位置检索“Two”


当然,您可以将“数组”放入变量中:

<xsl:variable name="my-items" select="document('')/xsl:stylesheet/my:items/item" />

这样您就可以缩短对:

<xsl:value-of select="$my-items[2]"/>

关于XSLT 1.0 : string into array variable,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33697387/

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