xsd 相关问题

XSD通常是指以W3C XML Schema格式编写的文档,其中包含特定类型的XML文档的描述。

根据 XML 架构 (XSD) 验证 JSON

是否可以在 Java 中使用 XSD 验证 JSON?我有一个接收 JSON 响应的应用程序,我想根据现有的 XSD 对其进行验证。我的应用程序的另一部分使用 X...

回答 3 投票 0

在 wpf 应用程序运行时从 xsd 生成 c# 文件

我不确定这是否可行,甚至不是一个好的方法,但我有一个 WPF 应用程序,它使用从 xsd 文件生成的 C# 类。该类是通过在术语中使用 xsd.exe 手动生成的...

回答 1 投票 0

限制在任何年份的特定日期

我正在创建一个架构,需要一个与季度结束相对应的日期(因此 YYYY-03-31、YYYY-06-30、YYYY-09-30 和 YYYY-12-31)。 我正在创建一个架构,需要一个与季度结束相对应的日期(因此 YYYY-03-31、YYYY-06-30、YYYY-09-30 和 YYYY-12-31)。 <xs:element type="xs:date" name="FilingPeriod"/> 是否有一种明智的方法来接受 date 格式的这些值并将它们限制为这些特定但可能无限的值(即永远是任何一年)?我想我可以对 string 字段施加一些限制并以这种方式进行验证,但这似乎是使用正确的 date 格式的黑客行为。 XSD 1.1 带有简单类型断言: <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"> <xs:element name="dates"> <xs:complexType> <xs:sequence> <xs:element name="date" type="end-of-quarter-date" maxOccurs="unbounded"/> </xs:sequence> </xs:complexType> </xs:element> <xs:simpleType name="end-of-quarter-date"> <xs:restriction base="xs:date"> <xs:assertion test="(day-from-date($value) = 31 and month-from-date($value) = (3, 12)) or (day-from-date($value) = 30 and month-from-date($value) = (6, 9))"/> </xs:restriction> </xs:simpleType> </xs:schema> XML 工作台中的在线 XSD 小提琴。

回答 1 投票 0

Eclipse RCP 中的 JDK 17 accessExternalSchema 问题

在 Eclipse RCP 中,我有一个具有 jar 依赖项的插件。 在此 jar 中,名为“xsd”的包内有一些 .xsd 文件。 (https://i.stack.imgur.com/Npv0u.png) 在同一个罐子里...

回答 1 投票 0

将 xsd 枚举转换为 C#

我有一个 xsd 文件,我从中生成一个 C# 类。为了提供更轻松的维护,我想仅在 xsd 文件中定义一个枚举,以便当我必须更改枚举时,我

回答 4 投票 0

Xerces v2.12.0 XML 架构 1.1 验证

Xerces 2.12.0 声称支持 XSD 1.1 (https://xerces.apache.org/xerces2-j/faq-xs.html),但我无法通过 SchemaFactory.newInstance 调用。 更多背景: 此行失败: 导入 javax.xml。

回答 2 投票 0

JAXB 和 xjc 的问题:构建项目时使用 minExclusive 约束解析 xs:decimal

我在从包含带有 minExclusive 约束的 xs:decimal 元素的 XML 模式 (XSD) 生成 Java 代码时遇到了 JAXB 和 xjc 的问题。尽管将类型指定为 xs:deci...

回答 1 投票 0

带有枚举的 Xsd - 输入枚举类型时出现错误

我正在尝试添加枚举类型,如下所示。它添加了字符串类型,但当 jaxb 将 xsd 转换为 java 类时我需要枚举值。我使用 simpletype 将其转换为字符串但不...

回答 2 投票 0

XML 模式 Beispiel aus Buch“Einstieg in XML”funktioniert nicht

在一个 C# 程序中,包含了 bestellbeleg1.xml 和 XmlReader。 Das zugehörige XSD-Schema (bestellbeleg1.xsd) wird über schema.SourceUri = args[1] angegeben。贝姆拉德...

回答 1 投票 0

XML XSD:从导入的 XSD 扩展复杂类型

我想扩展在导入的 XSD 中定义的复杂类型。我设置了以下示例: 基础.xsd: 我想扩展在导入的 XSD 中定义的复杂类型。我设置了以下示例: Base.xsd: <?xml version="1.0" encoding="UTF-8"?> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.example.com/base"> <xs:complexType name="BaseType"> <xs:sequence> <xs:element name="baseElement" type="xs:string"/> </xs:sequence> </xs:complexType> </xs:schema> 扩展.xsd: <?xml version="1.0" encoding="UTF-8"?> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:base="http://www.example.com/base" xmlns="http://www.example.com/extended" targetNamespace="http://www.example.com/extended"> <xs:import namespace="http://www.example.com/base" schemaLocation="Base.xsd" /> <xs:complexType name="ExtendedType"> <xs:complexContent> <xs:extension base="base:BaseType"> <xs:sequence> <xs:element name="extendedElement" type="xs:int" /> </xs:sequence> </xs:extension> </xs:complexContent> </xs:complexType> <xs:element name="ExtendedElement" type="ExtendedType" /> </xs:schema> 示例.xml <?xml version="1.0" encoding="UTF-8"?> <extended:ExtendedElement xmlns:extended="http://www.example.com/extended" xmlns="http://www.example.com/base" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.example.com/extended extended.xsd http://www.example.com/base base.xsd"> <baseElement>someString</baseElement> <extendedElement>3</extendedElement> </extended:ExtendedElement> 现在这个 XML 的问题是:我收到一个验证错误,其中一个元素“baseElement”是预期的(即使错误正好显示在这个元素上)。 XSD 定义有问题吗? 验证错误表明它不需要 XML 中的命名空间限定元素: 发现以元素 '{"http://www.example.com/base":baseElement}' 开头的无效内容。预计会出现 '{baseElement}' 之一。 由于您定义了非限定名称空间 xmlns="http://www.example.com/base" 来指向 http://www.example.com/base,因此每个非限定 XML 标签都将绑定到此。 通过将其更改为 xmlns:base="http://www.example.com/base" 命名空间,它应该可以工作

回答 1 投票 0

是否可以使用 JAXB 从模式映射到 java.util.Map?

我有一个现有的 XML 模式,其中包含我想使用 JAXB 映射到某种 Java 映射的类型。我的构建过程采用架构并创建 bean。我想定制...

回答 3 投票 0

演示 JAXB 解组不会加载 XSD 模式

与此问题相关,给出以下名为 customer.xsd 的架构: 与这个问题相关,给出以下名为customer.xsd的模式: <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"> <xs:simpleType name="stringMaxSize5"> <xs:restriction base="xs:string"> <xs:maxLength value="5"/> </xs:restriction> </xs:simpleType> <xs:element name="customer"> <xs:complexType> <xs:sequence> <xs:element name="name" type="stringMaxSize5"/> <xs:element ref="phone-number" maxOccurs="2"/> </xs:sequence> </xs:complexType> </xs:element> <xs:element name="phone-number"> <xs:complexType> <xs:sequence/> </xs:complexType> </xs:element> </xs:schema> 以下 XML 文档称为 input.xml: <customer xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="./customer.xsd"> <name>Jane Doe</name> <phone-number/> <phone-number/> <phone-number/> </customer> 以及以下解组代码: import java.io.File; import java.util.ArrayList; import java.util.List; import javax.xml.bind.JAXBContext; import javax.xml.bind.Unmarshaller; import javax.xml.bind.annotation.XmlRootElement; public class Unmarshal { @XmlRootElement(name = "customer") public static class Customer { public String name; @XmlElement(name="phone-number") public List<PhoneNumber> phoneNumbers = new ArrayList<PhoneNumber>(); } public static class PhoneNumber {} public static void main(String[] args) throws Exception { JAXBContext jc = JAXBContext.newInstance(Customer.class); Unmarshaller unmarshaller = jc.createUnmarshaller(); unmarshaller.setSchema(null); Customer customer = (Customer) unmarshaller.unmarshal(new File("input.xml")); System.out.println(customer.name); } } Java 代码能够将 XML 输入文档反序列化为 Customer 的实例,即使此 XML 文档产生 2 个验证错误(由外部编辑器指示): cvc-maxLength-valid: Value 'Jane Doe' with length = '8' is not facet-valid with respect to maxLength '5' for type 'stringMaxSize5'.xml(cvc-maxLength-valid) cvc-type.3.1.3: The value 'Jane Doe' of element 'name' is not valid.xml(cvc-type.3.1.3) 和 cvc-complex-type.2.4.f: 'phone-number' can occur a maximum of '2' times in the current sequence. This limit was exceeded. No child element is expected at this point.xml(cvc-complex-type.2.4.f) 这意味着 JAXB 在解组期间没有验证给定的 XML 输入,但是: 鉴于 unmarshaller.setSchema(null); 设置为 DISABLE 模式验证,有没有办法证明在解组时 JVM 未访问 customer.xsd 文件的内容? 换句话说,有没有办法不盲目相信 JVM 不会加载 XSD 引用,即使模式验证显式设置为 null? 更新1: 目的是找出 XML 文档内的 XSD 架构引用有多大可能成为安全攻击媒介,如下所述: https://owasp.org/www-community/vulnerability/XML_External_Entity_(XXE)_Processing https://cheatsheetseries.owasp.org/cheatsheets/XML_External_Entity_Prevention_Cheat_Sheet.html 谢谢。 我并不真正理解检查这一点的必要性,但这里有一个简单的用例,应该证明在解组 XML 时 XSD 文件不会被 JVM 加载: 通过任何您想要的插件从 XSD 创建 Java 类,或者像这里一样,手动创建它。将其打包在 jar 文件中,其中不含 XSD(仅限 Java 类) 在另一个 Java 程序中从 XML 编写解组代码,该代码依赖于第一个 JAR,并在类路径中没有任何 XSD 的情况下运行它 ==> 即使不知道 XSD 架构,您的代码仍然可以工作 您还可以查看 Java 代码本身: 实现 com.sun.xml.bind.v2.runtime.unmarshaller.UnmarshallerImpl 接口的 Unmarshaller 的默认 schema 属性为 null(因此将其设置为 null 在上面的代码中是无操作的) 您的代码不引用您创建 Java XML-annotated-POJO 的 XSD 本身:JVM 无法猜测您是根据外部模式编写的代码。 您还可以在调试模式下运行程序,并看到 XSD 不会被加载(同样,您的 Java 代码中没有引用:您甚至可以删除它,这不会产生任何影响)。 不过,我希望我已经回答了你的问题。

回答 1 投票 0

不同命名空间中的golang常用结构体

我有 160 多个 .xsd 模式,对于每个文件,我使用 xsdgen 生成 xsd.go 文件,但每个文档都有 CommonType 的公共标头。 命名空间 some_document 类型文档结构{ 标头常见...

回答 1 投票 0

jaxb2 从主 xsd 生成的类和通用 xsd 具有不同的命名空间

我有 2 个 xsd 模式,我使用 maven-jaxb2-plugin 从中生成一个类消息。主要的 xsd 是 message.xsd,它导入 common.xsd,其中包含一些常见类型。然而两者都有不同...

回答 1 投票 0

为 xml 模式中的简单类型生成正确的对象

我有 camt.026 ISO 消息的 ISO 20022 标准 .xsd 文件,以及它可以根据复杂类型 InvestigationStatus5Choice 上的 conf 元素使用的可能外部代码。 camt.026 xsd:...

回答 1 投票 0

使用 OpenXML 时按正确的顺序插入子元素

我正在使用 DocumentFormat.OpenXml 库修改 .docx 文档。我知道元素排序很重要,否则文档将无法通过模式验证,并且可能会导致文档无法...

回答 2 投票 0

XML:属性还是子项? [重复]哈利·波特

在 XSD、SOAP 和其他 XML 约定中,您经常会看到类似以下内容: 哈利·波特 J.K.罗琳 现在我想知道...

回答 2 投票 0

如何在Python中从xsd创建xml作为实例

我有xsd文件,我的任务是基于我尝试使用外部的xsd创建一个空的xml 我在 github 上找到的包是链接 https://github.com/fortesp/xsd2xml 这就是我的

回答 1 投票 0

如何定义一个模式定义,可以选择一个元素或另一个元素的多个元素

我正在尝试为可以有多种格式的类型进行架构定义,但我不太确定如何最好地做到这一点。 我试图为其创建类型的 XML 块将涵盖像这样的条目...

xsd
回答 1 投票 0

对于我附加了架构的 XML 文档,IntelliSense 无法在 VS2019 中工作

我想如果我将架构附加到 XML 文档,我会获得所有标签和属性名称的 IntelliSense 吗?但这似乎不起作用。我尝试将其添加到我的根标签中: 西西:

回答 2 投票 0

© www.soinside.com 2019 - 2024. All rights reserved.