想知道你能帮我吗?我在xml中有节点,如下所示
$ LOG:08880xbpnd $
fhdsafidsfsd
DF
SD
FSD
˚F
SD
FSD
我想知道是否有将所有文本转到一行,以便它可以传递到javascript函数?所以它会像这样
$ LOG:08880xbpnd $ fhdsafidsfsddfsdfsdfsdfsd
答案 0 :(得分:13)
不幸的是,normalize-space()
函数(在andynormancx的答案中使用)不仅仅是删除换行符。
删除所有前导空格和尾随空格,用一个空格字符替换任何一组内部空白空格。
在许多情况下,我们只想删除一种类型的空白字符(如当前情况 - 新行(CR + LF在XML解析器读取时自动规范化为LF)。
这样做的正确和安全的方法是使用标准XPath translate()
函数:
translate(., '
', '')
返回从当前节点的字符串值获取的字符串,其中删除了任何换行符。
以下是一个示例:
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output omit-xml-declaration="yes" indent="yes"/>
<xsl:template match="node()|@*">
<xsl:copy>
<xsl:apply-templates select="node()|@*"/>
</xsl:copy>
</xsl:template>
<xsl:template match="text()">
<xsl:value-of
select="translate(.,'
','')"/>
</xsl:template>
</xsl:stylesheet>
在此源XML文档上应用上述转换时:
<t>
$LOG: 08880xbpnd $
"embedded blanks must stay"
df
sd
fsd
f
sd
fsd
</t>
结果仅在一行上,根据需要,所有嵌入的空格保持不变:
<t>$LOG: 08880xbpnd $"embedded blanks must stay"dfsdfsdfsdfsd</t>
答案 1 :(得分:7)
normalize-space() XPath函数应该可以执行您想要的操作。