标签: xsd-validation

如何从 OpenAPI 3.0 规范生成 XSD 文件?

我使用 OpenAPI 3.0 和额外的 xml 元数据创建 XML API 规范,如Swagger 文档中所述。在开发阶段,我想根据 OpenAPI 3.0 规范自动测试端点的 XML 响应。

根据 OpenAPI 3.0 架构验证端点的 XML 响应的最佳方法是什么?通过验证,我的意思是:

  • 验证每个 XML 标签或标签的属性是否符合规范,
  • 规格要求的所有元素都存在,
  • 根据响应内容架构中声明的类型成功验证数据。

我想这样的测试可以通过以下步骤完成:

  1. 在项目构建期间,如果该路径已指定application/xml内容类型并且定义了响应架构,则从架构定义为 OpenAPI 规范中的每个路径生成 XSD 文件。

  2. 在测试中,获取特定端点的响应并根据 XSD 文件对其进行验证。

不幸的是,目前似乎没有可以从 OpenAPI 规范生成 XSD 以创建上述管道的工具。

你怎么能实现这个目标?是否可以结合使用 OpenAPI/Swagger 工具?是否有其他可靠的方法来验证 XML 响应而无需手动创建 XSD?

问题不是特定于编程语言的。

xml xsd xsd-validation swagger openapi-generator

6
推荐指数
0
解决办法
2338
查看次数

xsd:simpleType:xsd:pattern和xsd:maxLength能一起工作吗?

假设我正在处理一个xsd:simpleType,它是一个字符串,需要具有特定的字符集和特定的最大长度,类似于下面的代码:

<xsd:simpleType name="MyType">
    <xsd:restriction base="xsd:string">
    <xsd:pattern value="[0-9]" />
    <xsd:maxLength value="36" />
    </xsd:restriction>
</xsd:simpleType>  
Run Code Online (Sandbox Code Playgroud)

所以我的xsd类型将是一个只有数字的字符串,最多36个字符.我的问题是xsd:pattern和xsd:maxLength(或任何其他类似的标签,如minLength)是否可以一起工作.我的直觉不是; 基于模式或基于长度的xsd元素仅在xsd:restriction中.因此,我必须将最大长度限制添加到模式中.

请注意,我通过在Java上解组xml并验证失败来测试它.无论如何,我正在寻找的信息是两个如何以及模式和maxLength可以一起工作的信息.

regex xsd simpletype unmarshalling xsd-validation

5
推荐指数
1
解决办法
4002
查看次数

元素"xs:schema"的前缀"xs"未绑定

以下是我在为SOAP服务生成客户端时尝试使用的xsd,Eclipse正在抛出错误:元素"xs:schema"的前缀"xs"未绑定.

<xs:schema version="1.0" 
           targetNamespace="bdo.com.ph/RemitAPI">
  <xs:element name="CheckServiceResponse" 
              nillable="true" type="xs:string"/>
  <xs:element name="apiRequest" nillable="true" type="tns:APIRequest"/>
  .............................
      <xs:element name="referenceNo" type="xs:string" form="qualified"/>
    </xs:sequence>
  </xs:complexType>
</xs:schema> 
Run Code Online (Sandbox Code Playgroud)

我从webservice获得了这个xsd

xsd-validation

5
推荐指数
1
解决办法
3万
查看次数

在xsd中将模式添加到anyURI数据类型

如何保证url元素以"http://"开头?

<xs:element name="url" type="xs:anyURI"/>
Run Code Online (Sandbox Code Playgroud)

xsd xsd-validation

5
推荐指数
1
解决办法
5160
查看次数

如何使用条件类型赋值使类型依赖于属性值

我有这样的XML文件

<listOfA>
  <a type="1">
    <name></name>
    <surname></surname>
  </a>
  <a type="2">
    <name></name>
    <id></id>
  </a>
</listOfA>
Run Code Online (Sandbox Code Playgroud)

我想创建一个XSD,这样如果属性"type"的值为1,则必须存在name和surname元素,当它为2时,name和id必须在那里.我试图在XSD架构生成器中生成XSD ,但它使surname和id元素minOccurs = 0.我怎么能让它工作?

xml xsd xsd-validation xsd-1.1

5
推荐指数
1
解决办法
4940
查看次数

XSD 错误:不需要此元素

我正在编写一个 XSD 来验证一个 XML,但是当我验证这个错误时出现了:

输出 - 错误

使用 XML 模式验证当前文件:

错误:元素“{ http://www.w3.org/2001/XMLSchema-instance }Gasto”:不需要此元素。预期是(加斯托)

......我不明白这个错误


这是我的 XML 示例:

 <?xml version="1.0" encoding="UTF-8"?>
 <Armazem>  
    <Lista_Gastos xmlns:artGasto="http://www.w3.org/2001/XMLSchema-instance"     
        artGasto:noNamespaceSchemaLocation="TraXSD.xsd">
        <artGasto:Gasto id="50">
           <artGasto:nome>Robalo</artGasto:nome>
           <artGasto:quantidade>1</artGasto:quantidade>
       </artGasto:Gasto> 
    </Lista_Gastos>
 </Armazem>
Run Code Online (Sandbox Code Playgroud)

这是我的 XSD 示例:

 <?xml version="1.0" encoding="utf-8"?>
 <xsd:schema elementFormDefault="qualified" 
       attributeFormDefault="unqualified"
       xmlns:xsd="http://www.w3.org/2001/XMLSchema"
       xmlns:artGasto="http://www.w3.org/2001/XMLSchema-instance">
   <xsd:element name="Armazem">
        <xsd:complexType>
        <xsd:sequence>
               <xsd:element name="Lista_Gastos" 
                 type="TListGastos" maxOccurs="unbounded"/>
        </xsd:sequence>
      </xsd:complexType>
  </xsd:element>   

<xsd:complexType name="TListGastos">
    <xsd:sequence >
        <xsd:element name="Gasto" type="TGasto" 
          maxOccurs="unbounded"/>
    </xsd:sequence>
</xsd:complexType> 


 <xsd:complexType name="TGasto">
    <xsd:sequence >
        <xsd:element name="nome" type="xsd:string" />
        <xsd:element name="quantidade" type="xs:integer" />
    </xsd:sequence>
    <xsd:attribute name="id" type="xsd:string" use="required"/> …
Run Code Online (Sandbox Code Playgroud)

xml xsd xml-validation xsd-validation

5
推荐指数
1
解决办法
1万
查看次数

XSD maxLength 和 minLength 应用于整数

我在找出如何告诉 XSD 字段数据的最小长度必须为 12 位数字和最大长度为 14 位数字时遇到一些麻烦。有没有人知道如何做到这一点,因为minlengthmaxlength只能用于字符串。

<xs:simpleType name="timestamp_vorige_inspectie">
    <xs:restriction base="xs:integer">
        <xs:minLength value="12"/>
    </xs:restriction>
</xs:simpleType>
Run Code Online (Sandbox Code Playgroud)

xml xsd integer xml-validation xsd-validation

5
推荐指数
1
解决办法
1万
查看次数

从另一个 XSD 导入复杂类型

我发现将复杂类型从一个 XSD 文件导入和引用到另一个 XSD 文件时遇到困难。让我用一个例子来说明我的场景

学生.xsd

<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema targetNamespace="xyz"
    xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:common="xyz"
    xmlns="xyz"
    elementFormDefault="qualified">

    <xsd:element name="student" type="student" />

    <xsd:complexType name="student">
        <xsd:sequence>
            <xsd:element name="id" type="xsd:string" />
            <xsd:element name="birth-date" type="xsd:date" />
        </xsd:sequence>
    </xsd:complexType>
</xsd:schema>
Run Code Online (Sandbox Code Playgroud)

这是另一个 XSD,Teacher.xsd,我想在其中引用 Student.xsd 中的复杂类型 Student

老师.xsd

<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema targetNamespace="xyz"
    xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:common="xyz"
    xmlns="xyz"
    elementFormDefault="qualified">

    <xsd:import schemaLocation="student.xsd"
        namespace="xyzzz" />

    <xsd:element name="teacher" type="teacher" />

    <xsd:complexType name="teacher">
        <xsd:sequence>
            <xsd:element name="id" type="xsd:string" />
            <xsd:element name="name" type="xsd:string" />

            // TODO - Refer to student from student.xsd

        </xsd:sequence>
    </xsd:complexType>

</xsd:schema>
Run Code Online (Sandbox Code Playgroud)

我看过其他 Stack …

xml xsd xml-validation xsd-validation

5
推荐指数
1
解决办法
8920
查看次数

在 XSD 中,如何只允许元素内容中存在空格?

我正在为一个没有内容、只有属性的元素编写 XSD,这看起来相当简单:

  <xs:complexType name="ViewElement">
    <xs:attribute name="Name" type="xs:string" use="required"/>
  </xs:complexType>
  <xs:element name="VIEW" type="ViewElement" minOccurs="0" maxOccurs="unbounded"/>
Run Code Online (Sandbox Code Playgroud)

如果 XML 包含

<VIEW Name='V_UP'></VIEW>
Run Code Online (Sandbox Code Playgroud)

或者

<VIEW Name='V_UP'/>
Run Code Online (Sandbox Code Playgroud)

效果很好。但如果 XML 包含

<VIEW Name='V_UP'>
</VIEW>
Run Code Online (Sandbox Code Playgroud)

我明白了

该元素不能包含空格。内容模型为空。

我想让 XML 的作者能够灵活地以这种方式编写 XML,但我不知道如何允许内容,而只允许空白内容。有什么建议么?

xml xsd xml-validation xsd-validation

5
推荐指数
1
解决办法
2686
查看次数

为什么 Edge 将编码 ="UTF-8" 更改为编码 ISO-8859-1

浏览器 Edge 自行将 XSD 文件从编码“UTF-8”转换为 ISO-8859-1。我的问题是 1. 这是 EDGE 的特性吗,还是 EDGE 这样做是因为 UTF-8 在我没有查看时已被弃用,并被 ISO-8859-1 取代。2. 为什么浏览器之间的处理存在差异,3. 是否存在全局首选的编码结构。已阅读 W3 学校和 Stackoverflow 文章,内容丰富,但没有建议。
我想选择一个标准来处理我的应用程序中的所有 XML 文件(会有很多)。我应该只使用 ISO-8859-1 吗?请直接指导,帮助我真的感觉自己文盲占了上风。

事实是 A. Visual Studio 使用 UTF 创建文件,b我在关联的 Xml 文件中没有特殊字符/符号,将来也不需要它们,c.chrome 浏览器忽略(不显示)以下 XML 标记,该标记显示在边缘 ' 'd。两种浏览器都会处理 file:/// ...file。

用于测试 xsd 参考的代码为 file:///D:\prjClimateControl\prgrms\slnsVsTo\prjV00G00Jun0619\sysdocXml1.xsd

边缘显示中的xml标签是但显示为

没有错误消息文件显示正确但更改了结束编码

xsd-validation visual-studio-2012

5
推荐指数
0
解决办法
4592
查看次数