簡體   English   中英

如何在多個字符串中使用帶有“and”和“or”運算符的 substring-after() 和 substring-before()

[英]how to use substring-after() and substring-before() with 'and' and 'or' operators in multiple strings

我試圖使用 xpath 的元素的 substring,

<table>
  <tr><td>color : blue</td></tr>
  <tr><td>color - green</td></tr>
  <tr><td>jasmine flower</td></tr>
</table>

td標簽包含由連字符或冒號分隔的藍色綠色的顏色值

我有 xpath 用於冒號后的子字符串//tr/td/substring-after(text(),':')這給了我 output藍色和子字符串后的連字符//tr/td/substring-after(text(),'-')這給了我 output綠色

但我想將兩個 xpath 代碼合並為一個代碼

我嘗試了以下代碼//tr/td/[substring-after(text(),':') or substring-after(text(),'-')]這給了我這樣的 output

[true]
[true]
[false] 

//tr/td/text()[substring-after(.,':') or substring-after(.,'-')]給出 output 之類的

color : blue
color - green

我需要的是

blue
green

需要單行代碼

注意:我在http://videlibri.sourceforge.net/cgi-bin/xidelcgi中測試我的代碼

我建議string-join(//td[matches(., '[:\-]')]/tokenize(., '[:\-]')[2], ' ')或者string-join(//td[matches(., '[:\-]')]/tokenize(., '\s*[:\-]\s*')[2], ' ') .

很簡單

for $t in /*/tr/td/text()[1]/translate(., '-',':')
  return substring-after($t, ':')

基於 XSLT 的驗證

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

  <xsl:template match="/">
    <xsl:sequence select=
    "for $t in /*/tr/td/text()[1]/translate(., '-',':')
      return substring-after($t, ':')"/>
  </xsl:template>
</xsl:stylesheet>

當對提供的 XML 文檔應用上述轉換時

<table>
  <tr><td>color : blue</td></tr>
  <tr><td>color - green</td></tr>
  <tr><td>jasmine flower</td></tr>
</table>

評估 XPath 表達式,並將此評估的結果復制到 output

 blue  green 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM