我有一个像这样的示例xml文件,
<doc>
<p>text1 text2 </p>
<p>text1 text2 </p>
<p>text1 text2 </p>
</doc>
此示例xml,第一个 <p>
具有空格空白字符(  
),第二个 <p>
具有制表符空格空白字符( 	
),第三个 <p>
具有空格不间断空格字符(  
) .
我需要删除在关闭标签之前出现的任何空格 .
所以,预期的产量应该是,
<doc>
<p>text1 text2</p>
<p>text1 text2</p>
<p>text1 text2</p>
</doc>
通过使用xslt normalize-space(),我可以删除不必要的空格和制表符,但不能删除不间断的空白字符 .
<xsl:template match="p/text()">
<xsl:value-of select="normalize-space()"/>
</xsl:template>
有什么建议我如何规范化所有空格,包括xslt中不间断的空格?
1 回答
你可以这样做:
这将适用于XSLT 1.0和2.0 .
在XSLT 2.0中,您还可以使用正则表达式 - 例如:
将删除水平制表符以及Unicode
Space_Separator
类别中的任何字符,其中不仅包括空格和非空格字符,还包括其他空格字符 . 文档很难找到,但我相信这是目前的完整列表:(摘自http://www.unicode.org/Public/UNIDATA/UnicodeData.txt):但是,使用Saxon 9.5进行测试表明最后6个字符无法识别:http://xsltransform.net/ncntCSo