Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Xml 不验证XSD中的某些元素?_Xml_Xsd_Xsd Validation_Xml Validation - Fatal编程技术网

Xml 不验证XSD中的某些元素?

Xml 不验证XSD中的某些元素?,xml,xsd,xsd-validation,xml-validation,Xml,Xsd,Xsd Validation,Xml Validation,我想使用下面的XSD来验证特定的XML。同时,XSD不应该验证下面XML中的几个元素,而应该验证其他元素 例如,示例XML是: <args src="body"> <arg name="echo1">£*138</arg> <arg name="echo2">a-a$138</arg> <arg name="echo3">b-b$136</arg> <arg name=

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

例如,示例XML是:

<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>

£*138
a-a$138
b-b$136
£*136
我使用的XSD是:

<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>


如果仅限于XSD 1.0,则需要在XSD之外更改XML设计或验证。如果您可以使用XSD1.1,那么它将允许您基于XSD中的属性值表达宽松的验证约束,而无需更改XML设计

另请参见:


谢谢您的回复。XML无法更改。显然,下一个选项是使用XSD1.1。您能帮助我如何启动吗?(1)确保您有权访问XSD 1.1处理器。(2) 在我的答案中使用CTA链接,以获得如何在XSD1.1中使用CTA的示例。(3) 就你遇到的任何特殊困难提出一个新问题。