xml – 使用多个XSD

我有一个xsd,它有3个导入到另一个xsd,8个复杂类型和3个简单类型.

现在,我必须只处理1个compex类型,这反过来继承了许多其他XSD – 主要是当前xsd所具有的3个进口.

我将仅获得仅包含1种复杂类型的XML文件,我已经提到过.

现在我正在尝试生成包含根据单一复杂类型的数据的示例XML文件,并且我正在尝试验证它,但是当我尝试使用XMLSpy或OxygenXML时,它表示没有定义根节点.

现在,当我尝试定义根节点时,它不允许我这样做,如果我尝试为这个复杂类型创建另一个xsd,它也会给我一些错误,因为这个复杂类型在初始xsd中指向的是继承的xsd我没有在新的工作中工作,我尝试继承3 xsd,复杂类型指向新xsd中的初始xsd,但仍然无法正常工作.

另外我的另一个问题是 – 与完整的XSD相比,我们是否可以针对XSD的某些部分验证XML文件,因为根据XSD中的1个复杂元素类型,XML得到的是什么?

初始XSD的格式:

<?xml version="1.0" encoding="UTF-8"?>

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:schema location targetNamespace=targetnamespace elementFormDefault="qualified" attributeFormDefault="unqualified" version="0.652">
    <xs:import namespace=first xsd which is imported>
    <xs:import namespace=second xsd which is imported>
    <xs:import namespace=third xsd which is imported>
    <xs:complexType name="firstcomplextype" abstract="false">
        <xs:sequence>
            <xs:element name="some value" type="xs:string" minOccurs="0"/>
            <xs:element name="some value" type="some value"/>
            <xs:element name="some value" type="xs:string" minOccurs="0"/>
        </xs:sequence>
        <xs:attribute name="some value" type="xs:int" use="required"/>
        <xs:attribute name="some value" type="xs:value" use="required"/>
        <xs:attribute name="some value" type="xs:int" use="required"/>
    </xs:complexType>
    <xs:complexType name="second complex type" abstract="false">
        <xs:sequence>
            <xs:element name="some value" type="xs:some value" minOccurs="0"/>
            <xs:element name="some value" type="xs:some value" minOccurs="0"/>
            <xs:element name="some value" type="some value"/>
            <xs:element name="some value" type="some value"/>
        </xs:sequence>
    </xs:complexType>
    <xs:complexType name="third complex type**I need to work with only this complex type and xml file will contain data according to this complex type only and I need to validate incoming XML against only this complex type**" abstract="false">
        <xs:sequence>
            <xs:element name="some value" minOccurs="0">
                <xs:complexType>
                    <xs:sequence>
                        <xs:element name="some value" type="some value" minOccurs="0" maxOccurs="unbounded"/>
                    </xs:sequence>
                </xs:complexType>
            </xs:element>
            <xs:element name="some value" type="some value"/>
            <xs:element name="some value" minOccurs="0">
                <xs:complexType>
                    <xs:sequence>
                        <xs:element name="some value" type="some value" minOccurs="0" maxOccurs="unbounded"/>---**Here this particular element points to another XSD,one of the imported XSD's**
                    </xs:sequence>
                </xs:complexType>
            </xs:element>
            <xs:sequence minOccurs="0">
                <xs:element name="some value" type="xs:some value" minOccurs="0" maxOccurs="unbounded"/>
                <xs:element name="some value" minOccurs="0">
                    <xs:complexType>
                        <xs:sequence>
                            <xs:element name="some value" type="some value" minOccurs="0" maxOccurs="unbounded"/>---**Here this particular element points to another XSD,one of the imported XSD's**
                        </xs:sequence>
                    </xs:complexType>
                </xs:element>
            </xs:sequence>
            <xs:sequence minOccurs="0">
                <xs:element name="some value" type="xs:some value" minOccurs="0" maxOccurs="unbounded"/>
                <xs:element name="some value" minOccurs="0">
                    <xs:complexType>
                        <xs:sequence>
                            <xs:element name="some value" type="some value" minOccurs="0" maxOccurs="unbounded"/>
                        </xs:sequence>
                    </xs:complexType>
                </xs:element>
            </xs:sequence>
        </xs:sequence>
    </xs:complexType>
    <xs:complexType name="4th complex type" abstract="false">
        <xs:sequence>
            <xs:element name="elements">
                <xs:complexType>
                    <xs:sequence>
                        <xs:element name="some value" type="some value" maxOccurs="unbounded"/>
                    </xs:sequence>
                </xs:complexType>
            </xs:element>
        </xs:sequence>
    </xs:complexType>

并且xsd继续,因为它有许多更复杂的类型和简单类型.任何指导都将受到高度赞赏.

您发布的模式文件显示complexType定义.要验证XML文档,您应该在顶层具有与文档的根元素匹配的元素声明.如果您的架构(或其中一个导入的架构)具有此类架构,请发布该部分以及您尝试验证的简短XML文档.

验证模式的“部分”没有问题.顶级的任何元素声明都可以作为经过验证的XML文档的根元素,因为XML Schema没有定义根元素的概念(与DTD和RELAX NG不同,后者更加面向文档).

如果您可以控制XML文档,还可以尝试将xsi:type属性附加到根元素以指示要对其进行验证的complexType.所以你会添加类似的东西

xsi:type="firstcomplextype" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

在XML文档的根元素的属性中.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


php输出xml格式字符串
J2ME Mobile 3D入门教程系列文章之一
XML轻松学习手册
XML入门的常见问题(一)
XML入门的常见问题(三)
XML轻松学习手册(2)XML概念
xml文件介绍及使用
xml编程(一)-xml语法
XML文件结构和基本语法
第2章 包装类
XML入门的常见问题(二)
Java对象的强、软、弱和虚引用
JS解析XML文件和XML字符串详解
java中枚举的详细使用介绍
了解Xml格式
XML入门的常见问题(四)
深入SQLite多线程的使用总结详解
PlayFramework完整实现一个APP(一)
XML和YAML的使用方法
XML轻松学习总节篇