XSD通常是指以W3C XML Schema格式编写的文档,其中包含特定类型的XML文档的描述。
我正在尝试使用 Schematron 验证 XML 文件,这比 XSD 更复杂。我用谷歌搜索了很多,最好的结果是这个微软网站。但这仅展示了如何验证
如何使用 XSD 解析嵌套 XML 并在 Java 中创建结构化的 Hashmap 列表
我正在使用 Java 来处理 XML 数据。 我的目标是将嵌套的 XML 文件(带有关联的 XSD)转换为 Hashmap 列表,其中每个 HashMap 代表一行数据,带有 XML 标签名称...
我正在尝试根据 XSD 验证 XML 文档,但我似乎无法解决以下错误: 元素名称“Elektriciteit”无效。 预期出现以下情况之一: - VloeibareBiobra...
在哪里可以找到 Amazon 发布的 S3 XSD(XML 架构定义)?
我的一个应用程序使用 REST API 与 Amazon S3 服务器交互,对服务器执行“删除多个”操作并遇到错误响应: 我的一个应用程序使用 REST API 与 Amazon S3 服务器交互,对服务器执行“删除多个”操作并遇到错误响应: <?xml version="1.0" encoding="UTF-8"?> <Error> <Code>MalformedXML</Code> <Message>The XML you provided was not well-formed or did not validate against our published schema</Message> <RequestId>6FA...D61</RequestId> <HostId>E5G...uhg=</HostId> </Error> 引用亚马逊文档: 当用户发送格式错误的 xml(不存在的 xml)时,就会发生这种情况 符合已发布的 xsd) 的配置。错误信息 是,“您提供的 XML 格式不正确或未验证 反对我们发布的模式。” 我的一些应用程序的删除键包含可能会导致问题的编码字符。因此,我希望查看 Amazon 发布的架构 (XSD) 文件本身,通过验证器运行它来确定问题。 在哪里可以找到 Amazon XSD 文件? AmazonS3.xsd 可用,但另请参阅 Amazon Simple Storage Service API 参考: 使用 REST API 发出请求 REST API 删除多个对象 验证请求(AWS 签名版本 4) 最后,特别是考虑到您对 编码字符 的担忧,请注意,您的请求实际上可能格式不正确,导致 XSD 验证无法发挥作用。 (请参阅格式良好与有效的 XML。)API 文档中提供的示例就是这种情况,这会引发您收到的相同错误: 示例 3:请求中格式错误的 XML 此示例显示 Amazon S3 如何响应包含以下内容的请求: 格式错误的 XML 文档。 索取样品 以下请求发送格式错误的 XML 文档(缺少 删除结束元素)。 POST /?delete HTTP/1.1 Host: bucketname.S3.amazonaws.com Accept: */* x-amz-date: Wed, 30 Nov 2011 03:39:05 GMT Content-MD5: p5/WA/oEr30qrEEl21PAqw== Authorization: AWS AKIAIOSFODNN7EXAMPLE:W0qPYCLe6JwkZAD1ei6hp9XZIee= Content-Length: 104 Connection: Keep-Alive <Delete> <Object> <Key>404.txt</Key> </Object> <Object> <Key>a.txt</Key> </Object> 示例响应 响应返回描述错误的错误消息。 HTTP/1.1 200 OK x-amz-id-2: P3xqrhuhYxlrefdw3rEzmJh8z5KDtGzb+/FB7oiQaScI9Yaxd8olYXc7d1111ab+ x-amz-request-id: 264A17BF16E9E80A Date: Wed, 30 Nov 2011 03:39:32 GMT Content-Type: application/xml Server: AmazonS3 Content-Length: 207 <?xml version="1.0" encoding="UTF-8"?> <Error> <Code>MalformedXML</Code> <Message>The XML you provided was not well-formed or did not validate against our published schema</Message> <RequestId>91F27FB5811111F</RequestId> <HostId>LCiQK7KbXyJ1t+tncmjRwmNoeeRNW1/ktJ61IC8kN32SFXJx7UBhOzseJCixAbcD</HostId> </Error> 可以在这里找到:https://doc.s3.amazonaws.com/2006-03-01/AmazonS3.xsd (另请参阅 https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingSOAPOperations.html)
使用未在 XML 中显式定义但存在于 XSD 中的默认命名空间时,如何使 XML 通过 XSD 验证
我有一个 XML,由于以下问题而验证失败: 元素“example:lotNumber”的前缀“example”未绑定。行“4”,列“19”。 前缀“考试...
使用导入另一个架构的架构验证 XML 错误,有关导入架构中最初描述的元素的命名空间是错误的
我有一个 XML 文件 Baseplate.xml(见下文),我正在尝试根据架构 place.xsd(见下文)进行验证,该文件本身导入另一个架构 instance.xsd(见下文),后者本身导入
IntelliJ 如何获得构建 |重新构建以从 XSD 文件生成 POJO 并编译它们
这个问题是针对 IntelliJ 的。我还将将此内容发布到 IntelliJ 支持社区网站:https://intellij-support.jetbrains.com/hc/en-us/community/topics。 我正在使用最新版本的
编写一个运行 xsd 的 ps 脚本,从 2 个 xsd 文件生成 C# 类
我正在尝试从 powershell *.ps 文件运行此命令: c:\路径\xsd /c ./schemas/A.xsd ./schemas/B.xsd 这个命令在 cli 中效果很好,但我在将其转换为 ps 时遇到了麻烦......
我想使用java将导入语句添加到现有的schema/xsd文件中,我们是否可以将它们添加到xsd中?,我确实尝试了如下但收到错误:“org.w3c.dom.DOMException:
如何解决“未声明‘Level’属性。”下一个 xml 文件出错: 如何解决“未声明‘级别’属性。”下一个 xml 文件出错: <Settings xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xs="http://www.w3.org/2001/XMLSchema" xsi:noNamespaceSchemaLocation="Settings.xsd"> <ItemId Level="Guest" xsi:type="xs:string">Tech Support</ItemId> <ItemType Level="Administrator" xsi:type="xs:int">1</ItemType> <ItemShift Level="User" xsi:type="xs:time">07:00:00</ItemShift> </Settings> 和架构文件: <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" > <xs:simpleType name="typeLevels"> <xs:restriction base="xs:string"> <xs:enumeration value="Administrator" /> <xs:enumeration value="User" /> <xs:enumeration value="Guest" /> </xs:restriction> </xs:simpleType> <xs:attribute name="Level" type="typeLevels" /> <xs:complexType name="MySettings"> <xs:sequence> <xs:any processContents="lax" minOccurs="0" maxOccurs="unbounded" /> </xs:sequence> <xs:anyAttribute namespace="##targetNamespace" processContents="lax"/> </xs:complexType> <xs:element name="Settings" type="MySettings"/> </xs:schema> 从 xml 文件中删除 xmlns:xsd="http://www.w3.org/2001/XMLSchema" 命名空间修复了 Level 属性的问题,但会创建“根据其架构类型 'QName',属性 'type' 具有无效值 'xs:string' - 'xs' 是未声明的前缀”。错误。 使用下一个代码执行验证: void Validate(string xml, string xsd) { var schemaSet = new XmlSchemaSet() { XmlResolver = new XmlXsdResolver() }; schemaSet.Add(null, xsd); var settings = new XmlReaderSettings { ValidationType = ValidationType.Schema }; settings.Schemas = schemaSet; settings.ValidationFlags |= XmlSchemaValidationFlags.ProcessSchemaLocation | XmlSchemaValidationFlags.ProcessInlineSchema; settings.ValidationEventHandler += (sender, e) => { switch (e.Severity){ case XmlSeverityType.Error: Console.WriteLine(e.Message); break; }}; using (XmlReader validator = XmlReader.Create(xml, settings)) { while (validator.Read()) ; } } 我认为这里发生的事情如下: ItemId 元素与 lax 元素通配符匹配 xs:any 该元素没有元素声明,因此使用其 xsi:type 属性进行验证 xsi:type 属性表示元素必须属于 xs:string 类型。但是 xs:string 是一个简单类型,并且简单类型不允许属性。 我需要检查规格来确定这一点,但我认为这就是解释。
我有一个 XML,需要为其生成 XSD。我的 XML 如下: 实例: 我有一个 XML,需要为其生成 XSD。我的 XML 如下: 实例: <mes:GetInboundResponseGetInboundSMS xmlns:mes="http://abcd.com"> <response> <messages> <item> <date>15/04/2014 00:00:00</date> </item> <item> <date>01/07/2014 10:01:32</date> </item> </messages> </response> </mes:GetInboundResponseGetInboundSMS> 请注意,只有最外面的元素 GetInboundResponseGetInboundSMS 属于命名空间 http://abcd.com - 其余元素不属于。如何在 XSD 中指定这一点? 我尝试过以下 XSD,但这给了我错误: XSD: <xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema"> <xs:element name="GetInboundResponseGetInboundSMS"> <xs:complexType> <xs:sequence> <xs:element name="response"> <xs:complexType> <xs:sequence> <xs:element name="messages"> <xs:complexType> <xs:sequence> <xs:element name="item" maxOccurs="unbounded" minOccurs="0"> <xs:complexType> <xs:sequence> <xs:element type="xs:string" name="date"/> </xs:sequence> </xs:complexType> </xs:element> </xs:sequence> </xs:complexType> </xs:element> </xs:sequence> </xs:complexType> </xs:element> </xs:sequence> </xs:complexType> </xs:element> </xs:schema> 但是当我尝试使用在线验证器通过 XSD 验证实例时,我最终遇到了以下错误: 无效。 错误 - 第 1 行,第 95 行:org.xml.sax.SAXParseException;行号:1;列数:95; cvc-elt.1:找不到元素“mes:GetInboundResponseGetInboundSMS”的声明。 这是合乎逻辑的,因为我没有在 XSD 中提供命名空间。请帮助我理解 如何仅为 XSD 中的最外部元素提供此命名空间。 你有两件事不太符合你的要求。 您希望 GetInboundResponseGetInboundSMS 元素位于命名空间 http://abcd.com。 因此将 targetNamespace="http://abcd.com" 添加到您的架构元素中。 您希望该元素的子元素(全部声明为 GetInboundResponseGetInboundSMS 元素的匿名复杂类型的本地元素)是非限定的。 因此将 schema 元素上的 elementFormDefault="qualified" 更改为 elementFormDefault="unqualified"。 架构文档的开始标签应如下所示: <xs:schema targetNamespace="http://abcd.com" attributeFormDefault="unqualified" elementFormDefault="unqualified" xmlns:xs="http://www.w3.org/2001/XMLSchema"> 请将架构元素从默认包含到限定中,它将起作用。如果要在 XML 文档中使用相同的命名空间,请在开始和结束标记的前缀中添加该命名空间。它有效。
XSLT 使用 xslt 2.0 或更高版本将纯文本文件处理为 XML
我正在与一位使用“Workday”ERP 的客户合作。该 ERP 主要处理 XML、XSLT 和 XSD 脚本,但不处理其他编程语言来将数据传入和传出 ERP。 我有一个...
我正在尝试向 Swift Alliance Access(SAA) 发送 XML 消息。我的示例 xml 消息如下所示。但我收到“无效的 XML 前缀”错误消息。当我根据 XSD 检查 XML 时。它
我的 JAXB XSD 到 Java 类生成器不知何故没有从包含枚举的简单类型创建类,如下所示: 我的 JAXB XSD 到 Java 类生成器不知何故没有从包含枚举的简单类型创建类,就像这样: <xsd:element name="MyPriorityEnum"> <xsd:simpleType final="restriction"> <xsd:restriction base="xsd:string"> <xsd:enumeration value="NORMAL" /> <xsd:enumeration value="LOW" /> <xsd:enumeration value="HIGH" /> </xsd:restriction> </xsd:simpleType> </xsd:element> 我的build.gradle包含以下生成类的任务: def myXsd = "myxsd-v5.xsd" def myOutput = "$buildDir/generated/jaxb/model/src/main/java" tasks.register('generateSources') { doLast { def jaxbTargetDir = file("$myOutput") if (!jaxbTargetDir.exists()) { jaxbTargetDir.mkdirs() } ant.taskdef(name: 'xjc', classname: 'com.sun.tools.xjc.XJCTask', classpath: configurations.jaxb.asPath) ant.xjc( destdir: "${jaxbTargetDir}", schema: "${rootDir}/src/main/resources/xsd/${myXsd}", removeOldOutput: 'yes', extension: 'true' ) { arg(line: '-nv -disableXmlSecurity') } } } tasks.compileJava.dependsOn tasks.openApiGenerate, tasks.generateSources 我正在为所有 JAXB 依赖项使用最新版本,2.3.1。这可能是xjc的问题吗? 独立于 jaxb 版本/使用的插件/工具,我可以使用此 xsd 重现问题: <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" > <xsd:element name="MyPriorityEnum"> <xsd:simpleType final="restriction"> <xsd:restriction base="xsd:string"> <xsd:enumeration value="NORMAL" /> <xsd:enumeration value="LOW" /> <xsd:enumeration value="HIGH" /> </xsd:restriction> </xsd:simpleType> </xsd:element> </xsd:schema> ...但不能这样: <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:tns="https://my.org.com/foo/blahr" targetNamespace="https://my.org.com/foo/blahr" elementFormDefault="qualified"> <xsd:element name="MyPriorityEnum" type="tns:MyEnumType" /> <xsd:simpleType name="MyEnumType" final="restriction"> <xsd:restriction base="xsd:string"> <xsd:enumeration value="NORMAL" /> <xsd:enumeration value="LOW" /> <xsd:enumeration value="HIGH" /> </xsd:restriction> </xsd:simpleType> </xsd:schema> ...这意味着它可以工作:xjc 生成枚举类型。 最显着的区别是从“嵌套简单类型”到“引用简单类型”......(?)
无法使用架构验证 XML,但可以通过从中读取写入的文件来工作
我目前正在使用 lxml 并想要验证 XML 内容。 我从 tei = etree.Element("TEI", nsmap={None: 'http://www.tei-c.org/ns/1.0'} 完全用 Python 编写,有很多子元素...
我正在尝试将 xjc 生成的全大写类名更改为 CamelCase。为了实现这一点,我编写了一个 Python 脚本来生成绑定文件。这是脚本的一部分: 定义
使用 Apache CXF 4.0.3 中的 wsdl2java 在尝试将 XSD 导入我的 WSDL 文件时遇到错误。这些文件来自第 3 方,对于早期版本的 CXF,导入工作正常...
无法通过 jaxws:wsimport 实用程序 [binding.xsd] 创建 Web 服务客户端
我正在尝试使用网络服务,但我什至无法启动。一旦包含 Web 服务,我就会收到错误消息。我研究并发现了类似的错误,但没有发现这个错误。我希望你们知道...