xml – 使用多个XSD

前端之家收集整理的这篇文章主要介绍了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的格式:

  1. <?xml version="1.0" encoding="UTF-8"?>
  2.  
  3. <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:schema location targetNamespace=targetnamespace elementFormDefault="qualified" attributeFormDefault="unqualified" version="0.652">
  4. <xs:import namespace=first xsd which is imported>
  5. <xs:import namespace=second xsd which is imported>
  6. <xs:import namespace=third xsd which is imported>
  7. <xs:complexType name="firstcomplextype" abstract="false">
  8. <xs:sequence>
  9. <xs:element name="some value" type="xs:string" minOccurs="0"/>
  10. <xs:element name="some value" type="some value"/>
  11. <xs:element name="some value" type="xs:string" minOccurs="0"/>
  12. </xs:sequence>
  13. <xs:attribute name="some value" type="xs:int" use="required"/>
  14. <xs:attribute name="some value" type="xs:value" use="required"/>
  15. <xs:attribute name="some value" type="xs:int" use="required"/>
  16. </xs:complexType>
  17. <xs:complexType name="second complex type" abstract="false">
  18. <xs:sequence>
  19. <xs:element name="some value" type="xs:some value" minOccurs="0"/>
  20. <xs:element name="some value" type="xs:some value" minOccurs="0"/>
  21. <xs:element name="some value" type="some value"/>
  22. <xs:element name="some value" type="some value"/>
  23. </xs:sequence>
  24. </xs:complexType>
  25. <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">
  26. <xs:sequence>
  27. <xs:element name="some value" minOccurs="0">
  28. <xs:complexType>
  29. <xs:sequence>
  30. <xs:element name="some value" type="some value" minOccurs="0" maxOccurs="unbounded"/>
  31. </xs:sequence>
  32. </xs:complexType>
  33. </xs:element>
  34. <xs:element name="some value" type="some value"/>
  35. <xs:element name="some value" minOccurs="0">
  36. <xs:complexType>
  37. <xs:sequence>
  38. <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**
  39. </xs:sequence>
  40. </xs:complexType>
  41. </xs:element>
  42. <xs:sequence minOccurs="0">
  43. <xs:element name="some value" type="xs:some value" minOccurs="0" maxOccurs="unbounded"/>
  44. <xs:element name="some value" minOccurs="0">
  45. <xs:complexType>
  46. <xs:sequence>
  47. <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**
  48. </xs:sequence>
  49. </xs:complexType>
  50. </xs:element>
  51. </xs:sequence>
  52. <xs:sequence minOccurs="0">
  53. <xs:element name="some value" type="xs:some value" minOccurs="0" maxOccurs="unbounded"/>
  54. <xs:element name="some value" minOccurs="0">
  55. <xs:complexType>
  56. <xs:sequence>
  57. <xs:element name="some value" type="some value" minOccurs="0" maxOccurs="unbounded"/>
  58. </xs:sequence>
  59. </xs:complexType>
  60. </xs:element>
  61. </xs:sequence>
  62. </xs:sequence>
  63. </xs:complexType>
  64. <xs:complexType name="4th complex type" abstract="false">
  65. <xs:sequence>
  66. <xs:element name="elements">
  67. <xs:complexType>
  68. <xs:sequence>
  69. <xs:element name="some value" type="some value" maxOccurs="unbounded"/>
  70. </xs:sequence>
  71. </xs:complexType>
  72. </xs:element>
  73. </xs:sequence>
  74. </xs:complexType>

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

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

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

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

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

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

猜你在找的XML相关文章