[英]substring-after and substring-before with an element instead of a string
[英]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.