如何检测文本中的前导空格

时间:2010-09-18 06:53:15

标签: xslt

我想在前导空格后面的文本中添加一些字符串。如何检测领先空间的任何想法?感谢。

例如,我想在abc前添加“def”但是在前导空格之后。

<AAA>
    <CCC> abc</CCC>
</AAA>

输出应该变为:“defabc”

3 个答案:

答案 0 :(得分:2)

此转化

<xsl:stylesheet version="1.0"
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:output omit-xml-declaration="yes" indent="yes"/>
    <xsl:strip-space elements="*"/>

 <xsl:template match="node()|@*">
     <xsl:copy>
       <xsl:apply-templates select="node()|@*"/>
     </xsl:copy>
 </xsl:template>

 <xsl:template match="text()[starts-with(.,' ')]">
   <xsl:value-of select=
   "concat(' ', 'def', substring(.,2))"/>
 </xsl:template>
</xsl:stylesheet>

应用于提供的XML文档

<AAA>
    <CCC> abc</CCC>
</AAA>

生成想要的正确结果

<AAA>
   <CCC> defabc</CCC>
</AAA>

答案 1 :(得分:1)

假设您正在尝试在xslt中执行此操作,我将使用XSLT的starts-with函数。

如果您提供一些示例XSLT代码,则更容易解释更多。

答案 2 :(得分:0)

除了Dimitre正确使用模式匹配的答案之外,这个XPath表达式可以帮助你:

concat(substring($AddString, 1 div starts-with($String,' ')), $String)