【问题标题】:Test some conditions using XSL 1.0使用 XSL 1.0 测试一些条件
【发布时间】:2015-10-22 19:48:06
【问题描述】:

1) 如何使用 XSL1.0 检查数字变量是否只有 4 位。

<xsl:variable name="number" select="0715" />

2) 如何使用 XSL1.0 检查版本变量是否有数字后跟大写字母

<xsl:variable name="version" select="V1" />

【问题讨论】:

    标签: xslt xslt-1.0


    【解决方案1】:

    1) 如何使用 XSL1.0 检查数字变量是否只有 4 位。

    <xsl:variable name="number" select="0715" />
    

    这是不可能的,因为$number的值和你写的完全一样

    <xsl:variable name="number" select="715" />
    

    在您测试它的存在之前很久,微不足道的零就消失了。所以也许你只想要($number &amp;lt; 10000)

    另一方面,如果您要测试一个字符串是否恰好包含四位数字,请使用translate($x, '0123456789', '9999999999') = '9999'

    2) 如何使用 XSL1.0 检查版本变量是否有数字后跟大写字母

    取决于您所说的“跟随”是什么意思 - 介于两者之间吗?如果您的意思是“立即跟进”,那么您可以使用相同的技巧:

    translate(substring($x, 1, 1), '0123456789', '9999999999') = '9' 
     and 
    translate(substring($x, 2, 1), 'ABCD...XYZ', 'Z') = 'Z'
    

    【讨论】:

      【解决方案2】:
      1. 使用string-length() 函数确定...嗯,字符串的长度。

      2. 你可以测试:

        translate($version, 'ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789', 'AAAAAAAAAAAAAAAAAAAAAAAAAA0000000000') = 'A0'

      注意:这会测试单个大写字符后跟单个数字 - IOW,字符串“V1”通过此测试。

      还要注意,您的变量指向一个名为V1元素,而不是包含“V1”的字符串。

      【讨论】:

      • 这是什么意思? @@@@@@@@@@@@@@@@@@@@@@@@@@##########
      • @Joe 它没有任何意义——它是一个由 26 个“@”字符(字母表中的每个字母一个)和 10 个“#”字符(每个数字一个)组成的字符串。这样,所有字母字符都转换为“@”,所有数字都转换为“#”。实际上,我有一个更好的主意 - 请参阅我的编辑。
      猜你喜欢
      • 2023-02-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多