【问题标题】:XSD Validating - Regular ExpressionXSD 验证 - 正则表达式
【发布时间】:2014-02-25 15:30:59
【问题描述】:

我真的是 XSD 的“菜鸟”,但我正在尽力而为。

我有这个 XML:

<nombre_completo xmlns:xsi="xxxx "xsi:noNamespaceSchemaLocation="nombre_completo.xsd">
  <nombre>Jame Ruiz</nombre>
  <apellido1>Sancho</apellido1>
  <apellido2>Vera</apellido2>
</nombre_completo>

还有这个 XSD:

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
  <xs:element name="nombre_completo">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="nombre" type="verificar_nombre"/>
        <xs:element name="apellido1" type="xs:string"/>
        <xs:element name="apellido2" type="xs:string"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:simpleType name="verificar_nombre">
    <xs:restriction base="xs:string">
      <xs:pattern value="[a-zA-Z]*"/>
    </xs:restriction>
  </xs:simpleType>
</xs:schema>

我希望它验证名称部分。以示例组合名称:Miguel Angel、Jaime Ruiz。或者只是一个名字,比如“Ramon”或“John”。

我试过了:

[a-zA-Z]* [a-zA-Z]? 

但什么都没有。

【问题讨论】:

  • 你使用 [a-zA-Z] 会拒绝我的名字,我兄弟的名字,以及像 Gabriel García Márquez 这样的名字。
  • 您能解释一下为什么要拒​​绝“Gabriel García Márquez”或“Gus O'Donnell”等有效名称吗?

标签: xml regex xsd xsd-validation


【解决方案1】:

[a-zA-Z]* [a-zA-Z] 可以不接受任何内容和前面的一个字母。 所以你需要这样的东西

[a-zA-Z]+ [a-zA-Z]*

这将给出任意字母组合,但不能为空

 [a-zA-Z]+

加上这会给你空或任何字母组合。

[a-zA-Z]*

【讨论】:

  • LoKuzt 感谢您的回答,但这不是问题所在。我想在以下情况下验证 XML - Single Name F.Ex: "Lokuzt" - Composed Name F.Ex: "Lokuzt Rocks"
  • @user2402666 在我看来,Lokuzt 的建议会做你想做的事。如果 Lokuzt 的回答不够详细:&lt;xs:pattern value="[a-zA-Z]+ [a-zA-Z]*"/&gt;