如何根据xsd验证xml内容的某些属性以搜索空间的值存在

时间:2014-05-09 13:37:48

标签: xml regex xsd

下面是我的xml

<root>
<word>
 <string ID="S1" CONTENT="50 00"/>
</word>
</root>

我需要验证内部空间中的 CONTENT 不应该来,如果它来了它应该通过错误。

我们可以在XSD中使用任何模式匹配。请参考。

这是XSD

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
  <xs:element name="root">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="word"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="word">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="string"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="string">
    <xs:complexType>
      <xs:attribute name="CONTENT" use="required">
        <xs:simpleType>
                <xs:restriction base="xs:string">
                    <xs:pattern value="^\s*\S+\s*"></xs:pattern>
                </xs:restriction>
            </xs:simpleType>
      </xs:attribute>
      <xs:attribute name="ID" use="required" type="xs:NCName"/>
    </xs:complexType>
  </xs:element>
</xs:schema>

谢谢提前...... Umesh制作

1 个答案:

答案 0 :(得分:0)

\S*[^\s]*模式中的任何一种都可以为您做好。您不需要,也不应提供^$来锚定正则表达式; XSD正则表达式始终是锚定的,也就是说它们必须始终描述整个字符串。如果要允许前导和尾随空格,可以使用空白构面在模式匹配之前折叠空间,或者可以使用模式\s*\S*\s*