java - 用于 XML 验证的 XSD 创建

标签 java xml eclipse xsd-validation

我有下面的 xml,它基本上包含自动化测试所需的测试数据。我们之前使用 xls,但由于在 GIT 中进行版本控制很困难,我们希望转向 XML。现在,问题是 - 在 XLS 中,所有行始终一致(它们具有相同的 header ),但在 XML 中,member1 可能会添加带有 2 个参数的 row-1,而 member2 可能会添加带有 4 个参数的 row-2。随着行数的增加,很难看出哪些参数已经存在。在Excel中我们可以简单地检查标题。 我想限制 xml 对同一数据表节点下的所有行具有相同的参数。有人可以告诉我如何为此创建 XSD 吗?我是 xml 新手。

<?xml version = "1.0"? >
<Workbook xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="Sample.xsd" >
   <Datasheet name = "sheet1">
    <Row rowid="1">
      <firstname>dinkar</firstname>
      <lastname>kad</lastname>
      <nickname>dinkar</nickname>
      <marks>85</marks>
   </Row>
   <Row rowid="1">
      <firstname>dinkar</firstname>
      <lastname>kad</lastname>
      <nickname>dinkar</nickname>
      <marks>85</marks>
   </Row>
   <Row rowid="2">
      <firstname>dinkar</firstname>
      <lastname>kad</lastname>
      <nickname>dinkar</nickname>
      <marks>85</marks>
   </Row>
   </Datasheet>

   <Datasheet name = "sheet2">
    <Row rowid="2">
      <firstname2>Vaneet</firstname2>
      <lastname2>Gupta</lastname2>
      <nickname2>vinni</nickname2>
      <marks2>95</marks2>
   </Row>
   </Datasheet>


</Workbook>

最佳答案

这是一个简单的示例教程,用于学习如何操作: XSD How To?

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified">
       <xs:element name="Workbook">
              <xs:complexType>
                     <xs:sequence>
                            <xs:element name="Datasheet" maxOccurs="unbounded">
                                   <xs:complexType>
                                          <xs:sequence>
                                                 <xs:element name="Row" maxOccurs="unbounded">
                                                        <xs:complexType>
                                                               <xs:sequence>
                                                                      <xs:element name="firstname" type="xs:string"></xs:element>
                                                                      <xs:element name="lastname" type="xs:string"></xs:element>
                                                                      <xs:element name="nickname" type="xs:string"></xs:element>
                                                                      <xs:element name="marks" type="xs:int"></xs:element>
                                                                  </xs:sequence>
                                                               <xs:attribute name="rowid" type="xs:int"></xs:attribute>
                                                           </xs:complexType>
                                                    </xs:element>
                                             </xs:sequence>
                                          <xs:attribute name="name" type="xs:string"></xs:attribute>
                                      </xs:complexType>
                               </xs:element>
                        </xs:sequence>
                     <xs:attribute name="xmlns:xsi" type="xs:string"></xs:attribute>
                     <xs:attribute name="xsi:noNamespaceSchemaLocation" type="xs:string"></xs:attribute>
                 </xs:complexType>
          </xs:element>
   </xs:schema>

关于java - 用于 XML 验证的 XSD 创建,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54252330/

相关文章:

java - Java for-each 循环中的迭代

java - 解析android中的xml文件,获取给定节点的所有属性

javascript - Highcharts 分组类别数据 csv

Java 堆栈溢出错误 - 如何在 Eclipse 中增加堆栈大小?

eclipse - ld : Symbol(s) not found… but they are there…

java - 线程池与许多单独的线程

java - 我如何使用java提取span的名称?

java - 有没有更好的方法来为 java 编写这段代码?还是让它更干净?

xml - 如果 XSD 定义了 targetNamespace,是否可以验证没有命名空间的 XML 文档?

java - "CTRL + SHIFT + o"组织导入在 STS 中不起作用