xsd验证失败的正则表达式
我使用下面的simpleType只允许5种类型的单词。这工作正常。但问题是,它是失败的,如果我只在字符串的末尾附加大写字母的一个字符。xsd验证失败的正则表达式
请帮我解决这个问题。
<xsd:simpleType name="UpdateMemberPhysicalCardTypeType">
<xsd:annotation>
<xsd:documentation>
Type for physical data type
</xsd:documentation>
</xsd:annotation>
<xsd:restriction base="xsd:string">
<xsd:pattern value="([PERMANENT|TEMPORARY|NOT CARDED|RETAIL CARD|VIRTUAL CARD])*"/>
</xsd:restriction>
</xsd:simpleType>
成功案例: <typ:PhysicalCardType>PERMANENT</typ:PhysicalCardType>
- >做工精细
<typ:PhysicalCardType>PERMANENTqwer</typ:PhysicalCardType>
- >收到错误。它工作正常。
失败案例: <typ:PhysicalCardType>PERMANENTD</typ:PhysicalCardType>
- >没有收到错误。这不起作用。它允许这个词。它不应该允许这个。
这就是你想要的。
<xsd:pattern value="PERMANENT|TEMPORARY|NOT CARDED|RETAIL CARD|VIRTUAL CARD"/>
这里对此事的一个有用的页面:http://www.regular-expressions.info/xml.html
正则表达式的网站,http://www.regular-expressions.info/xml.html,我总是作为一个使用的走向,解释说, 规则表达式匹配找到的第一个实例一场比赛。在这种情况下,你已经指示它匹配PERMANENT,然后,因为你已经在()*中包含了他的语句,它会循环。我不知道你的验证程序为什么允许PERMANENTD,但你显示的正则表达式应该允许PERMANENTTEMPORARY作为有效的条目,我不确定你想要那个。
当我想列举一组特定的许可和互斥值的XML架构中,我使用一个枚举,就像这样:
<xs:simpleType name="UpdateMemberPhysicalCardTypeType">
<xs:restriction base="xs:string">
<xs:enumeration value="PERMANENT" />
<xs:enumeration value="TEMPORARY" />
<xs:enumeration value="NOT CARDED" />
<xs:enumeration value="RETAIL CARD" />
<xs:enumeration value="VIRTUAL CARD" />
<xs:enumeration value="list-session" />
</xs:restriction>
</xs:simpleType>
谢谢@ user114622。 – Ramkumar
感谢菲尔·沃尔顿。这工作正常。但是我遇到的另外一个问题是,如果我在字符串的末尾追加一个空格,它就允许。我没有收到错误。 – Ramkumar
示例输入: PERMANENT typ:PhysicalCardType> –
Ramkumar
@RamkumarRaghu尝试' ' –