xslt - 选择字符串中的第一个空格
问题描述
我想在文本中选择字符串的第一个空格。
输入 :
<p>Text 1<italic>should</italic> Text 2.</p>
后面有一个空格</italic>
。我只想选择该空间并替换<s>
该空间的 a 。我怎样才能做到这一点。
尝试过的代码:
<xsl:template match="p/text()[2]">
<s/>
</xsl:template>
预期成绩 :
<p type="body">Text 1
<style type="underline">should</style><s/>have surgery.</p>
这个尝试过的代码不能正常工作。我正在使用 xslt 2.0
解决方案
在 XSLT 2.0 中,您可以:
<xsl:template match="p/text()[preceding-sibling::*[1][self::italic]]">
<xsl:analyze-string select="." regex="^\s" >
<xsl:matching-substring>
<s/>
</xsl:matching-substring>
<xsl:non-matching-substring>
<xsl:value-of select="." />
</xsl:non-matching-substring>
</xsl:analyze-string>
</xsl:template>
这匹配紧跟在italic
元素之后的文本节点,并检查第一个字符是否为空格。如果是,它将被一个空s
元素替换。
或者,您可以将匹配模式本身限制为仅包含以空格开头的节点:
<xsl:template match="p/text()[preceding-sibling::*[1][self::italic]][starts-with(., ' ')]">
<s/>
<xsl:value-of select="substring(., 2)" />
</xsl:template>
推荐阅读
- android - 如何通过 Flutter 保护存储在 iOS 和 Android 中的数据?
- java - java - 如何让一个类在java中进行数学运算?
- python - 熊猫:用逗号分割列后重复的列号
- python - 从地理数据框中检查多边形内的点
- java - Java Azure 函数不在本地执行
- javascript - 在 Firefox 上禁用时按钮不会失去焦点
- kubernetes - 通过 API 启动特定 Pod 并从外部连接
- android - Firebase-mlkit 条码扫描器许可证
- javascript - 发送给 ajax 的值不会改变
- javascript - 我正在寻找 HTML 属性的更多选项/信息:“contenteditable = 'true'”和 javascript:“focus()”函数