首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用Xpath和XSLT选择特定字符串

使用Xpath和XSLT选择特定字符串
EN

Stack Overflow用户
提问于 2019-07-29 11:04:42
回答 2查看 136关注 0票数 0

我想在<>之间选择String。

投入:

代码语言:javascript
运行
复制
<p type="Endnote Text">&lt;p:endnote_bl1&gt;This is a bullet list in an endnote</p>
<p type="Endnote Text">&lt;p:endnote_bl2&gt;This is a bullet list in an endnote</p>
<p type="Endnote Text">&lt;p:endnote_bl3&gt;This is a bullet list in an endnote</p>

我想从文本中选择p:endnote_bl1,p:endnote_bl2, etc..。它意味着&lt;&gt;之间的任何文本。我如何才能为此编写XPath。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-07-29 12:13:38

在XSLT中,使用xpath,您可以简单地选择所有p元素(或者tps:p元素,如果您有名称空间),并使用substring-beforesubstring-after提取文本,不过请注意,这假设每个&lt;&gt;都有一个匹配项。

代码语言:javascript
运行
复制
<xsl:for-each select="//p[@type='Endnote Text']">
  <xsl:value-of select="substring-before(substring-after(., '&lt;'), '&gt;')" />
  <xsl:text>&#10;</xsl:text>
</xsl:for-each>

http://xsltfiddle.liberty-development.net/bnnZX7上看到它的动作

如果您可以使用XSLT2.0,您可以不使用xsl:for-each.

代码语言:javascript
运行
复制
<xsl:value-of select="//p[@type='Endnote Text']/substring-before(substring-after(., '&lt;'), '&gt;')" separator="&#10;" />

或者也可以在XSLT2.0中使用replace .

代码语言:javascript
运行
复制
<xsl:value-of select="//p[@type='Endnote Text']/replace(., '&lt;(.+)&gt;.*', '$1')" separator="&#10;" />
票数 1
EN

Stack Overflow用户

发布于 2019-07-29 12:20:47

您可以只使用xpath,如果我们这样修复您的xml:

代码语言:javascript
运行
复制
<doc>
  <p type="Endnote Text">&lt;p:endnote_bl1&gt;This is a bullet list in an endnote</p>
  <p type="Endnote Text">&lt;p:endnote_bl2&gt;This is a bullet list in an endnote</p>
  <p type="Endnote Text">&lt;p:endnote_bl3&gt;This is a bullet list in an endnote</p>
</doc>

然后这个表情,

代码语言:javascript
运行
复制
doc/p/substring(./text(),2,13)

将选择

代码语言:javascript
运行
复制
p:endnote_bl1
p:endnote_bl2
p:endnote_bl3
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57252502

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档