首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >不验证XSD中的某些元素吗?

不验证XSD中的某些元素吗?
EN

Stack Overflow用户
提问于 2018-08-14 09:54:32
回答 1查看 137关注 0票数 1

我想使用下面的XSD来验证特定的XML。同时,XSD不应该验证以下XML中的少数元素,而应该验证其他元素。

例如,示例XML是:

代码语言:javascript
复制
<args src="body">
    <arg name="echo1">£*138</arg>
    <arg name="echo2">a-a$138</arg>
    <arg name="echo3">b-b$136</arg>
    <arg name="echo4">£*136</arg>
</args>

我使用的XSD是:

代码语言:javascript
复制
<xs:schema attributeFormDefault="unqualified"
  elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:element name="args">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="arg" maxOccurs="9" minOccurs="1">
          <xs:complexType>
            <xs:simpleContent>
              <xs:extension base="argFilter">
                <xs:attribute name="name" use="required" type="codeEnumeration" />
              </xs:extension>
            </xs:simpleContent>
          </xs:complexType>
        </xs:element>
      </xs:sequence>
      <xs:attribute name="src" use="required">
        <xs:simpleType>
          <xs:restriction base="xs:string">
            <xs:enumeration value="url"/>
            <xs:enumeration value="body"/>
          </xs:restriction>
        </xs:simpleType>
      </xs:attribute>
    </xs:complexType>
  </xs:element>
  <xs:simpleType name="codeEnumeration">
    <xs:restriction base="xs:string">
      <xs:enumeration value="echo1"/>
      <xs:enumeration value="echo2"/>
      <xs:enumeration value="echo3"/>
      <xs:enumeration value="echo4"/>
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="argFilter">
    <xs:restriction base="xs:string">
      <xs:minLength value="0"/>
      <xs:maxLength value="256"/>
      <xs:pattern value="[a-zA-Z0-9 ,:?.\\\-_=%+@&amp;!@#$%^*()\[\]+={}|\/:;,?`~'&quot;&lt;&gt;]*"/>
     </xs:restriction>
  </xs:simpleType>
</xs:schema>

从上面的XML中,我不希望echo1echo4被验证,但是所有其他元素都应该被验证。因此,基本上它应该允许echo1echo4中的任何值,但是限制echo2echo3的值来匹配模式值。如何通过修改上面的XSD来实现这一点?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-08-14 11:17:11

如果仅限于XSD1.0,则需要更改XML设计或验证,而不是XSD。如果您可以使用XSD1.1,那么http://www.w3.org/TR/xmlschema11-1/#cTypeAlternative将允许您根据XSD中的属性值表示轻松的验证约束,而无需更改您的XML设计。

还请参见:

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51838692

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档