Xslt 为什么<;xsl:for each select=";text()&燃气轮机;忽略空白?
为什么Xslt 为什么<;xsl:for each select=";text()&燃气轮机;忽略空白?,xslt,Xslt,为什么忽略空格 示例XML源: <body> Things<note>such as people</note> <note>or animals</note>act in crazy ways. </body> 人或动物的行为都是疯狂的。 示例XSL: <xsl:template match="body"> <output> <xsl:for-each selec
忽略空格
示例XML源:
<body>
Things<note>such as people</note> <note>or animals</note>act in crazy ways.
</body>
人或动物的行为都是疯狂的。
示例XSL:
<xsl:template match="body">
<output>
<xsl:for-each select="text()">
<text>
<xsl:value-of select="."/>
</text>
</xsl:for-each>
</output>
</xsl:template>
我希望这一产出:
<output>
<text>Things</text><text> </text><text>act in crazy ways.</text>
</output>
事情发展得很疯狂。
但我得到的是:
<output>
<text>Things</text><text>act in crazy ways.</text>
</output>
事情都很疯狂。
有人能告诉我这是怎么回事吗
谢谢 这并不是说
忽略空白文本节点,而是说,只有空白的文本节点在解析输入文档时可能会在样式表模板看到它们之前被剥离
根据XSLT规范,XSLT默认情况下从样式表文档中除去
元素中的纯空白文本节点;但除非您使用
,否则不会从源文档中删除它们
以下是对它的描述:
在源文档的树之后
或样式表文档已被删除
建造,但在建造之前
否则由XSLT处理一些文本
节点被剥离。文本节点是
除非它只包含
空白字符。剥离
文本节点从中删除文本节点
那棵树。汽提过程需要几分钟
作为一组元素名称的输入
必须保留哪些空白。
汽提工艺适用于:
样式表和源文档,
但是保留空白的集合
元素名称已确定
对于样式表和
源文件
如果出现以下情况,则保留文本节点:
以下情况适用:
- 文本节点父节点的元素名位于保留空白的元素名集中
- 文本节点至少包含一个非空白字符。与XML中一样,空白字符是#x20、#x9、#xD或#xA
- 文本节点的祖先元素有一个值为preserve的xml:space属性,没有一个更接近的祖先元素有值为default的xml:space属性
,请告诉我们有关XSLT处理器和顶级样式表元素的更多信息
根据,并不是每个XSLT处理器都遵守规范中描述的默认行为。您可以尝试将以下内容作为
的子项添加,看看它是否解决了问题:
<xsl:preserve-space elements="*"/>
这并不是说
忽略空白文本节点,而是在解析输入文档时,在样式表模板看到它们之前,纯空白文本节点可能会被剥离
根据XSLT规范,XSLT默认情况下从样式表文档中除去
元素中的纯空白文本节点;但除非您使用
,否则不会从源文档中删除它们
以下是对它的描述:
在源文档的树之后
或样式表文档已被删除
建造,但在建造之前
否则由XSLT处理一些文本
节点被剥离。文本节点是
除非它只包含
空白字符。剥离
文本节点从中删除文本节点
那棵树。汽提过程需要几分钟
作为一组元素名称的输入
必须保留哪些空白。
汽提工艺适用于:
样式表和源文档,
但是保留空白的集合
元素名称已确定
对于样式表和
源文件
如果出现以下情况,则保留文本节点:
以下情况适用:
- 文本节点父节点的元素名位于保留空白的元素名集中
- 文本节点至少包含一个非空白字符。与XML中一样,空白字符是#x20、#x9、#xD或#xA
- 文本节点的祖先元素有一个值为preserve的xml:space属性,没有一个更接近的祖先元素有值为default的xml:space属性