一,你可以做這樣的事情在XSLT 2.0:
<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="s">
<xsl:variable name="vWords" select=
"tokenize(lower-case(string(.)),
'[\s.?!,;—:\-]+'
) [.]
"/>
<xsl:sequence select=
" for $current in .,
$i in 1 to count($vWords)
return
if($vWords[$i] eq 'blood'
and
$vWords[$i+1] eq 'pressure'
)
then .
else()
"/>
</xsl:template>
<xsl:template match="text()"/>
</xsl:stylesheet>
當這個XSLT 2.0變換應用到下面的XML文檔(在這個問題沒有提供這樣的文件! ):
<t>
<s>He has high blood pressure.</s>
<s>He has high Blood Pressure.</s>
<s>He has high Blood
Pressure.</s>
<s>He was coldblood Pressured.</s>
</t>
有用,正確的結果(只包含` 「血液」 和 「壓力」(不區分大小寫的元素和作爲兩個相鄰字)產生:
<s>He has high blood pressure.</s>
<s>He has high Blood Pressure.</s>
<s>He has high Blood
Pressure.</s>
說明:
使用tokenize()
功能分裂上的NN-字母字符的字符串,用旗爲不區分大小寫和多在線模式。
通過tokenize()
結果迭代找到一個"blood"
字由"pressure"
字緊隨其後。
II。一個XSLT 1.0溶液:
<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:variable name="vUpper" select=
"'ABCDEFGHIJKLMNOPQRSTUVWXYZ'"/>
<xsl:variable name="vLower" select=
"'abcdefghijklmnopqrstuvwxyz'"/>
<xsl:variable name="vSpaaaceeees" select=
"' '
"/>
<xsl:variable name="vAlpha" select="concat($vLower, $vUpper)"/>
<xsl:template match="s">
<xsl:variable name="vallLower" select="translate(., $vUpper, $vLower)"/>
<xsl:copy-of select=
"self::*
[contains
(concat
(' ',
normalize-space
(translate($vallLower, translate($vallLower, $vAlpha, ''), $vSpaaaceeees)),
' '
),
' blood pressure '
)
]
"/>
</xsl:template>
<xsl:template match="text()"/>
</xsl:stylesheet>
當該變換是在相同的XML文檔(上文)施加相同correst結果產生:
<s>He has high blood pressure.</s>
<s>He has high Blood Pressure.</s>
<s>He has high Blood
Pressure.</s>
說明:
轉換爲小寫。
使用雙翻譯方法將任何非alpha字符替換爲空格。
然後使用normalize-space()
用一個空格替換任何一組相鄰空格。
然後用空格圍住這個結果。
最後,驗證當前結果是否包含字符串" blood pressure "
。
偉大的迴應Dimitre,謝謝。通過我的代碼後,我實際上產生了正確的結果。我使用的表單發佈數據,我認爲是造成這個問題。再次感謝 – rossjha 2012-03-13 10:01:21