Xml 在XSLT V 1.0中添加空间

Xml 在XSLT V 1.0中添加空间,xml,xslt,translate,Xml,Xslt,Translate,XSLT文件中有两条selects语句。我试图完成的是在select语句的输出中添加一个空格 例如,以下代码: <xsl:value-of select="translate(CAudioFile/CRI/PrivateData/PrivateData/DictionaryEntry[Key='CD1']/Value, ',',';')" /> 返回此输出: 9702195481;31201(CCC代理) 我想在左括号前加一个空格。因此,输出将是: 9702195481;312

XSLT文件中有两条selects语句。我试图完成的是在select语句的输出中添加一个空格

例如,以下代码:

<xsl:value-of select="translate(CAudioFile/CRI/PrivateData/PrivateData/DictionaryEntry[Key='CD1']/Value, ',',';')" />

返回此输出:

9702195481;31201(CCC代理)

我想在左括号前加一个空格。因此,输出将是:

9702195481;31201(CCC代理)

我尝试使用“translate”函数,但它只允许两个输入

第二个select语句:

<xsl:for-each select="/CAudioFile/Agent/GroupsList/int"><xsl:value-of select="@name"/></xsl:for-each> 

返回

53115(ABCDE城市IIM)

我想在第一个括号前加一个空格。因此,输出为:

53115(ABCDE城市IIM)

有什么建议吗

多谢各位

编辑:

当我使用以下代码时,它99%的时间都能工作,并提供我想要的输出:

<xsl:variable name="cd1"    select="CAudioFile/CRI/PrivateData/PrivateData/DictionaryEntry[Key='CD1']/Value" />
<xsl:value-of select="translate(substring-before($cd1, '('), ',', ';')"/>
<xsl:text> (</xsl:text>
<xsl:value-of select="substring-after($cd1, '(')"/> 
<xsl:text>, </xsl:text>

(
, 
输出为:

9702195481;31201(CCC代理)

但是,有时代码会返回稍微不同的输出:

9286136438;31172(GCG代理),18887113613

我希望此代码用分号替换每个逗号,此字符串的输出如下所示:

9286136438;31172(GCG代理);18887113613

这样我就可以把它们放在一列下


非常感谢您的帮助。

将您的值放入变量中,以便更易于重用:

<xsl:variable name="string"  
              select="translate(CAudioFile/CRI/PrivateData/PrivateData/DictionaryEntry[Key='CD1']/Value, ',',';')" />

可以用作子字符串函数的分隔符,如果它出现不超过一次。这在XSLT 1.0或+)中起作用。

将您的值放入变量中,以便更易于重用:

<xsl:variable name="string"  
              select="translate(CAudioFile/CRI/PrivateData/PrivateData/DictionaryEntry[Key='CD1']/Value, ',',';')" />

可以用作子字符串函数的分隔符,如果它出现不超过一次。这在XSLT 1.0或+)中起作用。

将您的值放入变量中,以便更易于重用:

<xsl:variable name="string"  
              select="translate(CAudioFile/CRI/PrivateData/PrivateData/DictionaryEntry[Key='CD1']/Value, ',',';')" />

可以用作子字符串函数的分隔符,如果它出现不超过一次。这在XSLT 1.0或+)中起作用。

将您的值放入变量中,以便更易于重用:

<xsl:variable name="string"  
              select="translate(CAudioFile/CRI/PrivateData/PrivateData/DictionaryEntry[Key='CD1']/Value, ',',';')" />

可以用作子字符串函数的分隔符,如果它出现不超过一次。这在XSLT 1.0或+)中有效。

不能使用translate将一个字符替换为两个字符。请尝试以下方法:

<xsl:variable name="value" select="CAudioFile/CRI/PrivateData/PrivateData/DictionaryEntry[Key='CD1']/Value" />

<xsl:value-of select="translate(substring-before($value, '('), ',', ';')"/>
<xsl:text> (</xsl:text>
<xsl:value-of select="substring-after($value, '(')"/>

(
或者,如果您愿意:

<xsl:value-of select="concat(translate(substring-before($value, '('), ',', ';'), ' (', substring-after($value, '('))"/>

不能使用translate将一个字符替换为两个字符。请尝试以下方法:

<xsl:variable name="value" select="CAudioFile/CRI/PrivateData/PrivateData/DictionaryEntry[Key='CD1']/Value" />

<xsl:value-of select="translate(substring-before($value, '('), ',', ';')"/>
<xsl:text> (</xsl:text>
<xsl:value-of select="substring-after($value, '(')"/>

(
或者,如果您愿意:

<xsl:value-of select="concat(translate(substring-before($value, '('), ',', ';'), ' (', substring-after($value, '('))"/>

不能使用translate将一个字符替换为两个字符。请尝试以下方法:

<xsl:variable name="value" select="CAudioFile/CRI/PrivateData/PrivateData/DictionaryEntry[Key='CD1']/Value" />

<xsl:value-of select="translate(substring-before($value, '('), ',', ';')"/>
<xsl:text> (</xsl:text>
<xsl:value-of select="substring-after($value, '(')"/>

(
或者,如果您愿意:

<xsl:value-of select="concat(translate(substring-before($value, '('), ',', ';'), ' (', substring-after($value, '('))"/>

不能使用translate将一个字符替换为两个字符。请尝试以下方法:

<xsl:variable name="value" select="CAudioFile/CRI/PrivateData/PrivateData/DictionaryEntry[Key='CD1']/Value" />

<xsl:value-of select="translate(substring-before($value, '('), ',', ';')"/>
<xsl:text> (</xsl:text>
<xsl:value-of select="substring-after($value, '(')"/>

(
或者,如果您愿意:

<xsl:value-of select="concat(translate(substring-before($value, '('), ',', ';'), ' (', substring-after($value, '('))"/>


谢谢。我让第一个正常工作,但是第二个仍然有问题。我在foreach中有@name。我看不出你有多个名称,为什么每个都需要?如果你希望有多个名称,那么就可以了。但是我对第一个有问题。我对XML文件没有任何控制。当我们将第一个“,”替换为“;”,它只会执行一次。但是,在某些情况下,它会在结束括号后添加另一个逗号。是否仍要将字符串中的所有“,”替换为“;”,因此,无论添加了多少个逗号,我仍然将此列中的所有数据作为一列插入。很抱歉,我不理解这个问题。我建议您可以编辑您的问题并在那里发布代码-包括预期的结果。请确保您还澄清了在结果中如何分隔不同的值-因为您有一个“cd1”值和一个或多个“名称”相同字符串中的值。谢谢。第一个有效,但第二个仍有问题。我在foreach中有@name。我看不出您有多个名称,为什么每个都需要多个名称?如果您确实需要多个名称,那么就可以了。但第一个有问题。我无法控制XML文件。当我们将第一个“,”替换为“;”时,它只会执行一次。但是,在某些情况下,它会在结束括号后添加另一个逗号。无论如何,是否要将字符串中的所有“,”替换为“;”,所以无论添加了多少个逗号,我仍然会将此列中的所有数据作为一列插入。很抱歉,我不理解其中的含义问题。我建议您编辑您的问题并在那里发布代码-包括预期的结果。确保您还澄清了在结果中需要如何分隔不同的值-因为您有一个“cd1”值和一个或多个“名称”相同字符串中的值。谢谢。第一个有效,但第二个仍有问题。我在foreach中有@name。我看不出您有多个名称,为什么每个都需要多个名称?如果您确实需要多个名称,那么就可以了。但第一个有问题。我无法控制XML文件。当我们将第一个“,”替换为“;”时,它只会执行一次。但是,在某些情况下,它会在结束括号后添加另一个逗号。无论如何,是否要将字符串中的所有“,”替换为“;”,所以无论添加了多少个逗号,我仍然会将此列中的所有数据作为一列插入。很抱歉,我不理解其中的含义问题。我建议您编辑您的问题并在那里发布代码-包括预期的结果。确保您还澄清了在结果中需要如何分隔不同的值-因为您有一个“cd1”值和一个或多个“名称”相同字符串中的值。谢谢。第一个有效,但第二个仍有问题。我在foreach中有@name。我看不出您有多个名称,为什么每个都需要多个名称?如果您确实需要多个名称,那么就可以了。但第一个有问题。我无法控制XML文件。当我们将第一个“,”替换为“;”时,它只执行一次。但是,