XML中的字符串模式

问题描述

我想为元素照片写一个图案,该照片的名称 png jpg 结尾 我尝试了这段代码,但无法正常工作

 <xs:simpleType name="Photo">

    <xs:restriction base="xs:string">
        <xs:pattern value="[a-z]([.png] | [.jpg])"/>
    </xs:restriction>

</xs:simpleType>

解决方法

我以前没有在XSD中使用正则表达式,但是假设它只是一个正则表达式,您需要:

[a-z]+\.(png|jpg)

这意味着:

  • 至少一个(但可选)许多a-z字符
  • 然后一段
  • 然后pngjpg

请注意,您可能希望在第一部分中允许其他字符,例如数字和大写字母。您还应该考虑使用非ASCII字符。

,

由于您使用的是XSD 1.1,因此可以使用断言使验证逻辑更加明确。创建起来容易得多,维护起来也容易得多。

检查一下。

XSD 1.1

<xs:simpleType name="Photo">
    <xs:restriction base="xs:string">
        <xs:assertion test="ends-with($value,'.jpg') or ends-with($value,'.png')"/>
    </xs:restriction>
</xs:simpleType>

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...