<xsl:value-of select="substring-before($temp1,';')" disable-output-escaping="yes"/>
其中temp1="fassdf sdf; asdf &dfsdfsdf;fsdfsf;"
上面的代码用于使用“;”分割值。问题是temp1有&
,因此它将该值除以转义序列字符;。所以我的输出错了。但是,如果我使用disable-output-escaping="yes"
,则"&"
会转换为&amp;。
如何从字符串中获取格式化的值?因此,如果我拆分字符串,我将不会遇到任何问题。因为我会得到&amp;而不是&
答案 0 :(得分:2)
让我们为您的方便假设一个示例XML ..
<?xml version="1.0" encoding="utf-8"?>
<root>
<child>sharepoint; R&D;Department;</child>
</root>
输出所需的XSLT代码:
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:msxsl="urn:schemas-microsoft-com:xslt" exclude-result-prefixes="msxsl"
>
<xsl:output method="text" indent="no"/>
<xsl:strip-space elements="*"/>
<xsl:template match="/">
<xsl:apply-templates select="node()"/>
</xsl:template>
<xsl:template match="child">
<xsl:call-template name="SplitString">
<xsl:with-param name="StringVal" select="concat(.,';')"/>
</xsl:call-template>
</xsl:template>
<xsl:template name="SplitString">
<xsl:param name="StringVal"/>
<xsl:variable name="first" select="substring-before($StringVal, ';')" />
<xsl:variable name="remaining" select="substring-after($StringVal, ';')" />
<xsl:value-of select="normalize-space($first)" disable-output-escaping="yes" />
<xsl:if test="$remaining">
<xsl:value-of select="' '"/>
<xsl:call-template name="SplitString">
<xsl:with-param name="StringVal" select="$remaining" />
</xsl:call-template>
</xsl:if>
</xsl:template>
</xsl:stylesheet>
这是你得到的输出:
sharepoint
R&D
Department