gpt4 book ai didi

xml - '仅限字符'检查xsl字符串?

转载 作者:数据小太阳 更新时间:2023-10-29 02:49:19 24 4
gpt4 key购买 nike

我如何检查一个字符串是否只包含字符(XSLT 文件)?

<xsl:variable name="IsValid1">
<xsl:choose>
<xsl:when test="string-length(//FirstName) &gt; 0 and string-length(//LastName) &gt; 0 and substring(//FirstName, 1, 3) != 'TST' and XXXX//FirtName only charactersXXXXX ">
</xsl:when>
<xsl:otherwise>
</xsl:otherwise>
</xsl:choose>
</xsl:variable>

最佳答案

这个 XPath 表达式:

string-length(translate($yourString, $allValidChars, '')) = 0

$yourString 中的所有字符都包含在字符串 $allValidChars 中时,计算结果为 true()

否则它的计算结果为 false()

二。 XPath 2.0 解决方案——更加强大

当“有效”字符或“无效字符”都没有方便和紧凑的表达方式时,可以使用 XPath 2.0 的 RegEx 功能。使用 RegEx 和字符类可以这样写:

matches($str,'^\p{L}+$')

只有当 $str 完全由字母组成(所有 unicode 字符都是任何 Unicode 支持的字母表中的字母)时,它才匹配。

这是一个基于 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[matches(.,'^\p{L}+$')]">
<xsl:copy-of select="."/>
</xsl:template>

<xsl:template match="text()"/>
</xsl:stylesheet>

当此转换应用于以下 XML 文档时:

<t>
<s>abcDПЖЗ</s>
<s>abcd</s>
<s>abcd123</s>
</t>

产生了想要的正确结果:

<s>abcDПЖЗ</s>
<s>abcd</s>

解释:

根据规范,\p{L} 匹配任何字母。

与此问题相关:

在 XPath 1.0 中,如何从字符串中删除所有非字母字符?

这里的困难在于你不知道所有的非apha字符是什么。

该解决方案也称为“双翻译法”,由 Michael Kay (@Michael Kay) 首次展示:

translate($s, translate($s, $alpha, ''), '')

关于xml - '仅限字符'检查xsl字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6555639/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com