我不知道这是多么可行,但我正在研究XSD的数据类型,我正在尝试做的一件事就是扩展它以允许姓氏中的连字符。因此,这应与Smith
Fry
和Safran-Foer
匹配。另外,我想将被检查字符串的长度限制为不超过100(或101)个字符。我的正则表达原来是:
<xsd:pattern value="[a-zA-Z ]{0,100}"/>
现在我知道我可以做一些事情,我可以解决这个问题,任意一方允许50个字符,如:
<xsd:pattern value="[a-zA-Z ]{0,50}(\-)?[a-zA-Z ]{0,50}"/>
但这似乎不合适。有没有办法按照以下方式做点什么:
<xsd:pattern value="[a-zA-Z (\-)?]{0,100}"/>
另一种询问我正在寻找的方法是'匹配一个0到100长的字符串,其中不超过1个连字符'。
谢谢!
答案 0 :(得分:2)
这是'Match a string of characters between 0 and 100 long with no more than 1 hyphen in it'
的摆动加上一些额外的限制:
考虑到XSD正则表达式支持的语法,我认为你不能在模式中完成最大长度;但是,将它与maxLength方面结合起来很容易。
这是XSD:
<?xml version="1.0" encoding="utf-8" ?>
<!--W3C Schema generated by QTAssistant/W3C Schema Refactoring Module (http://www.paschidev.com)-->
<xsd:schema targetNamespace="http://tempuri.org/XMLSchema.xsd" elementFormDefault="qualified" xmlns="http://tempuri.org/XMLSchema.xsd" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<xsd:element name="last-name">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:maxLength value="100"/>
<xsd:pattern value="[a-zA-Z ]+\-?[a-zA-Z ]+"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
</xsd:schema>
可以进一步细化模式以禁止仅由空格包围的连字符等。
有效的XML:
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<!-- Sample XML generated by QTAssistant (http://www.paschidev.com) -->
<last-name xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://tempuri.org/XMLSchema.xsd">last - name</last-name>
无效的XML(连字符过多)和消息:
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<!-- Sample XML generated by QTAssistant (http://www.paschidev.com) -->
<last-name xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://tempuri.org/XMLSchema.xsd">l-ast - name</last-name>
验证错误:
Error occurred while loading [], line 3 position 121
The 'http://tempuri.org/XMLSchema.xsd:last-name' element is invalid - The value 'l-ast - name' is invalid according to its datatype 'String' - The Pattern constraint failed.
无效的XML(长度超过最大值,对于我使用过maxLength = 14的测试)和消息:
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<!-- Sample XML generated by QTAssistant (http://www.paschidev.com) -->
<last-name xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://tempuri.org/XMLSchema.xsd">last - name that is longer</last-name>
验证错误:
Error occurred while loading [], line 3 position 135
The 'http://tempuri.org/XMLSchema.xsd:last-name' element is invalid - The value 'last - name that is longer' is invalid according to its datatype 'String' - The actual length is greater than the MaxLength value.