我必须得到一个元素的内容,该元素在元素的内容之间也有xml-tags。因此,我得到一个项目序列,这会产生问题,因为我必须将结果传递给normalize-space函数,该函数不允许多个项目的序列。以下是错误消息:
“不允许多个项目的序列作为normalize-space()的第一个参数(”Hello ...“,”world“,...)”
XSL代码:
<xsl:value-of select="normalize-space(preceding-sibling::node()/text())"/>
XML:
<title>Hello
<tag1>world</tag1>
Hello2<tag1><tag2>world2
Hello3</tag2></tag1><tag1><tag2>world3
Hello4</tag2><tag3>world4
Hello5</tag3></tag1></title>
我正在寻找一种简单的方法将字符串的结果序列组成一个字符串,我可以将其用于规范化空间函数。作为toString()函数的东西。但我愿意接受任何好的建议,这可以解决我的问题!
答案 0 :(得分:0)
通过将术语更改为:我已解决了我的问题:
<xsl:value-of select="normalize-space(preceding-sibling::title)"/>
答案 1 :(得分:0)
我认为你对上下文节点条件有误解。但如果title
元素确实是上下文节点,则获取title
元素的规范化字符串值的最简单方法是使用normalize-space(string(.))
。 string(.)
返回上下文节点的字符串值。
[输入]
<?xml version="1.0" encoding="UTF-8"?>
<title>Hello
<tag1>world</tag1>
Hello2<tag1><tag2>world2
Hello3</tag2></tag1><tag1><tag2>world3
Hello4</tag2><tag3>world4
Hello5</tag3></tag1></title>
[样式表]
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
exclude-result-prefixes="xs"
version="2.0">
<xsl:template match="title">
<result>
<xsl:value-of select="normalize-space(string(.))"/>
</result>
</xsl:template>
</xsl:stylesheet>
[结果]
<?xml version="1.0" encoding="UTF-8"?><result>Hello world Hello2world2 Hello3world3 Hello4world4 Hello5</result>