XSD验证用于根据存储的架构验证XML文件。
简而言之,我的疑问是:在 W3C XML Schema 中扩展混合元素类型,我们是否必须显式声明 mix="true 扩展元素?或者这是否隐含地源自以下事实:
我有以下 Employee 类。我需要从此类生成一个 xml,这样只允许使用 One 属性。要么是salary1,要么是salary2。 如果从数据库获取的salary1大于
如果我在 xml 中有一个元素,它是表示计数 n 的整数。如果我有一个元素,其中包含一系列元素,这些元素的属性 id 应从 1 开始,一直到 n。 是...
如何使用 xmllint 通过 XSD 验证 XML 文档?
我正在尝试使用 xmllint 来检查我的工作,同时开发基本的 XSD,即 XML 架构定义。然而它给了我一个错误: 验证失败:未找到 DTD。 我做错了什么? 我的 XML...
XSD Schema 中指标未直接定义时的默认值是什么? 我应该(或可以)在 XML 中定义 foo 的属性多少次(最小和最大)以及什么顺序? XSD Schema 中指标未直接定义时的默认值是多少? 我应该(或可以)在 XML 中定义 foo 的属性多少次(最小和最大)以及什么顺序? <xs:complexType name="foo"> <xs:attribute name="name1" type="xs:string"/> <xs:attribute name="name2" type="xs:string"/> </xs:complexType> 附注这个例子是一个真实有效的项目。 在 XSD 中, xsd:attribute/@use 属性确定 XML 属性是否 may、must 或 must not 出现: optional:属性可能出现,但不一定出现。 这是默认值。 required:属性必须出现。 prohibited:属性不得出现。 在 XML 中,每个元素最多只能有一个具有给定名称的属性,并且属性的顺序无关紧要。 另请参阅 在 XSD(XML 架构)中设置 XML 的属性顺序 xsd:属性声明去哪里了? (从:属性开始发现问题。) [ RUTINITAS IRT BERSIH BERSIH RMH ,🍆🍑🍑 ]1 RUTINITAS IRT BERSIH BERSIH RMHRea cciones - 拖运
我试图了解这个 xml 文件有什么问题: 我试图了解这个 xml 文件有什么问题: <?xml version="1.0" encoding="UTF-8"?> <FileRichiesta xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://ivaservizi.agenziaentrate.gov.it/docs/xsd/ServiziMassivi/input/RichiestaServiziMassivi/v1.0 RichiestaServiziMassivi_v1.0.xsd" xmlns="http://ivaservizi.agenziaentrate.gov.it/docs/xsd/ServiziMassivi/input/RichiestaServiziMassivi/v1.0" versione="1.0"> <TipoRichiesta>FATT</TipoRichiesta> <NomeFile>request.xml</NomeFile> <File>base64_encoded_file_which_seems_to_be_ok</File> </FileRichiesta> xsd 是: <?xml version="1.0" encoding="UTF-8"?> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" xmlns="http://ivaservizi.agenziaentrate.gov.it/docs/xsd/ServiziMassivi/input/RichiestaServiziMassivi/v1.0" targetNamespace="http://ivaservizi.agenziaentrate.gov.it/docs/xsd/ServiziMassivi/input/RichiestaServiziMassivi/v1.0" version="1.0"> <xs:import namespace="http://www.w3.org/2000/09/xmldsig#" schemaLocation="http://www.w3.org/TR/2002/REC-xmldsig-core-20020212/xmldsig-core-schema.xsd"/> <xs:element name="FileRichiesta" type="FileType"/> <xs:complexType name="FileType"> <xs:sequence> <xs:element name="TipoRichiesta" type="StringType" /> <xs:element name="NomeFile" type="NomeFileType" /> <xs:element name="File" type="xs:base64Binary" xmime:expectedContentTypes="*/*" xmlns:xmime="http://www.w3.org/2005/05/xmlmime" /> <xs:element ref="ds:Signature" minOccurs="0"/> </xs:sequence> <xs:attribute name="versione" type="VersioneType" use="required"/> </xs:complexType> <xs:simpleType name="NomeFileType"> <xs:restriction base="xs:normalizedString"> <xs:pattern value="[a-zA-Z0-9_\.]{9,50}" /> </xs:restriction> </xs:simpleType> <xs:simpleType name="StringType"> <xs:restriction base="xs:normalizedString"> <xs:pattern value="[A-Za-z_]{1,100}"/> </xs:restriction> </xs:simpleType> <xs:simpleType name="VersioneType"> <xs:restriction base="xs:string"> <xs:maxLength value="5"/> </xs:restriction> </xs:simpleType> </xs:schema> 我收到此错误: Invalid content was found starting with element 'TipoRichiesta'. One of '{TipoRichiesta}' is expected. Row: 7 - Column: 20. 我的xml好吗? 我是在阅读意大利政府文件后写的。 您需要告诉架构 TipoRichiesta 元素与整个文档属于同一名称空间。将以下属性添加到 xs:schema: elementFormDefault="qualified"
XSD 1.0 可空,带有 xs:string 类型枚举限制基数
我想确认我对 XSD nillable 属性的理解,因为它涉及强制枚举的限制基础。例如,给出以下内容: 我想确认我对 XSD nillable 属性的理解,因为它涉及强制枚举的限制基础。例如,给出以下内容: <xs:complexType name="_fruits"> <xs:sequence> <xs:element name="fruit" nillable="true" minOccurs="0" maxOccurs="unbounded"> <xs:simpleType> <xs:restriction base="xs:string"> <xs:enumeration value="apple"/> <xs:enumeration value="banana"/> <xs:enumeration value="pear"/> <xs:enumeration value="orange"/> </xs:restriction> </xs:simpleType> </xs:element> </xs:sequence> </xs:compexType> <xs:element name="fruits" type="_fruits"/> 以下模式验证失败: <fruits> <fruit>apple</fruit> <!-- ok --> <fruit>banana</fruit> <!-- ok --> <fruit xsi:nil="true"/> <!-- not ok --> </fruits> 允许空值的选项有哪些?我想到的是创建一个可为空的类型,然后使用联合 <xs:simpleType name="_nullableType"> <!-- the nullable type --> <xs:restriction base="xs:string"> <xs:maxLength value="0"/> </xs:restriction> </xs:simpleType> <xs:simpleType name= "_fruit"> <!-- the restriction base fruit --> <xs:restriction base="xs:string"> <xs:enumeration value="apple"/> <xs:enumeration value="banana"/> <xs:enumeration value="pear"/> <xs:enumeration value="orange"/> </xs:restriction> </xs:simpleType> <xs:simpleType name="_nullableFruit"> <!-- a union of the restriction base and nullable --> <xs:union memberTypes="_fruit _nullableType"/> </xs:simpleType> <xs:element name="nullableFruit" type="_nullableFruit"/> <xs:complexType name="_fruits"> <!-- complex type --> <xs:sequence> <xs:element ref="nullableFruit" minOccurs="0" maxOccurs="unbounded"/> </xs:sequence> </xs:compexType> 然而,虽然上述达到了预期的效果,但非常复杂。任何其他选择将不胜感激。 您实际上声明了 xsi 命名空间吗? (如果您向我们展示了错误消息,那么我们就不需要询问...) 我的首选方法是将 fruit 声明为 minLength = 0、maxLength = 1 的列表类型。 我不喜欢使用xsi:nil,它看起来非常不必要的复杂。
我正在使用 C# 和 .NET 8.0.6。 我有一个 XSD,它声明了一个带有 xs:token 内容的“根”元素。 当我使用具有填充内容的实例元素验证文档时,p...
使用 XML 版本 1.1 对于游戏,我构建了一个名为“connected_condition”的复杂结构。它的代码看起来有点像这样: 使用 XML 版本 1.1 对于游戏,我构建了一个名为“connected_condition”的复杂结构。它的代码看起来有点像这样: <xs:complexType name="connected_condition" mixed="true"> <xs:sequence> <xs:choice minOccurs="0" maxOccurs="3"> <xs:element name="instruction" type="command" minOccurs="0" maxOccurs="2"/> <xs:element name="condition" type="extendedConditionFunction" minOccurs="0" maxOccurs="1"/> <xs:element name="annotation" type="defined_annotation" minOccurs="0" maxOccurs="2"/> </xs:choice> </xs:sequence> <xs:attribute name="annotation" type="annotation"/> <xs:attribute name="clothes" type="clothesType"/> <xs:attribute name="extended"> <xs:simpleType> <xs:union memberTypes="extendedParameter extendedFunction"/> </xs:simpleType> </xs:attribute> <xs:attribute name="value" type="valueString"/> <xs:attribute name="lasting" type="children" use='required'/> </xs:complexType> 此结构应该调用我的 xml xsd 文件中定义的几个可能属性的一个对象。第一个属性或元素应该是稍后要检查的条件(可以是任何预定义类型)。第二个元素及其属性始终被认为是当第一个属性或元素被满足时触发的结果。一个过于简单的例子如下所示: <connected_condition lasting ='false' annotation='stand'><annotation extended='roll_twice'/></connected_condition> 在这个例子中,当玩家处于站立状态时,他也应该掷两次骰子,而不是一次。属性lasting还定义了这是否是一次性使用,或者该效果是否将持续到被取消为止。 由于该结构应该检查并造成几种不同的效果,因此也可以使用类似的元素。所以像这样的结构也是有效的: <connected_condition lasting='false' annotation='stand'><annotation annotation='sit'/></connected_condition> 正如您可以想象的那样,这有可能两个元素实际上可能具有相同的属性,并且值也相同。所以可能有这样的结构:<annotation='stand'><annotation annotation='stand'/>。 为了防止这种情况,我在 xsd 文件中使用了一个断言,如下所示: <xs:assert test="not (. eq (annotation/@annotation))"/> 到目前为止,这一切都完美无缺。 然而,我的结构变得更加灵活,并且还应该调用给出新条件的函数(例如,为了在满足另一个条件时删除较早的状态或条件本身)。 这引出了我手头的问题。当我仅使用一次类似类型的子元素时,我的断言有效。但当我使用多个子元素时,它总是失败。我想要有效的结构看起来像这样: <connected_condition lasting='true' extended='sit'><annotation annotation='roll_twice'/><annotation annotation='changeMood'/><annotation annotation='delete'/></connected_condition> 在这里,玩家再次应该掷骰子两次,这次是坐着的。这种效果应该会持续到被取消为止。然而,一旦游戏情绪发生变化(可能由其他效果或条件触发),它就应该被删除。问题是,目前这些结构一旦具有多个相同类型的元素annotation,就会在默认情况下无法通过断言检查。 我如何编辑我的断言来检查,如果在具有相同类型的多个子元素的更复杂的条件结构中,这些元素的值永远不会相同,而不会在默认情况下失败? 我不确定我是否完全理解了您的要求,但是... 您通常可以通过唯一性约束来做到这一点。例如,在 connected_condition 的元素声明(不是类型声明)中使用 <xs:unique selector="annotation" field="@annotation"/>。 如果您不能这样做(例如,因为需要唯一的元素需要更复杂的谓词),那么您可以使用 test="count(annotation/@annotation) = count(distinct-values(annotation/@annotation))" 形式的断言。
如何在Python中使用SCH(schematron)和XSD验证XML?
我正在使用 Python 生成电子发票 XML 文件 (CII D16B)。这些文件符合 EN16931 标准 (https://github.com/ConnectingEurope/eInvoicing-EN16931)。 我需要验证生成的...
我必须使用 xsd 文件验证 xml。 xsd 文件 companySendType.xsd 是: 我必须使用 xsd 文件验证 xml。 xsd 文件 companySendType.xsd 是: <?xml version="1.0" encoding="UTF-8"?> <xs:schema xmlns:CC="http://test.com" xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="http://test.com" elementFormDefault="qualified" attributeFormDefault="unqualified"> <xs:include schemaLocation="companyType.xsd"/> <xs:element name="companySendType" > <xs:complexType> ... </xs:complexType> </xs:element> </xs:schema> Java代码: SchemaFactory sf = SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI); Schema schema = sf.newSchema(new Source[]{ new StreamSource(ClassLoader.getSystemClassLoader().getResourceAsStream("companyType.xsd")), new StreamSource(ClassLoader.getSystemClassLoader().getResourceAsStream("companySendType.xsd")) }); Validator validator = schema.newValidator(); StringReader stringReader = new StringReader(xmlToValidate); StreamSource streamSource = new StreamSource(stringReader); validator.validate(streamSource); 我得到的错误是: 找不到元素“CC:companySendType”的声明 xml 是: <?xml version="1.0" encoding="UTF-8"?> <CC:companySendType version="1.0" xsi:schemaLocation="http://test.com companySendTypev1.18.xsd" xmlns:CC="http://test.com" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> </CC:companySendType> 我不明白为什么它不起作用,xml文件似乎没问题。 我检查了你的xsd,看来你还没有声明元素的类型CC:companySendType。您可以使用一些默认类型,例如: <xs:element name="companySendType" type="xs:string"/> 或者如果您有一个复杂类型,您应该像下面的示例一样定义它: <xs:element name="companySendType"> <xs:complexType> <xs:sequence> <xs:element name="x1" type="xs:string"/> <xs:element name="x2" type="xs:string"/> </xs:sequence> </xs:complexType> </xs:element>
我正在尝试为其中一个标签的 id 属性定义一个 ID。文档和 xsd 架构要求使用 xs:id 确认 id 集。 我尝试了“ID_123”,但当我尝试时......
如何通过 XmlReader ValidationType.Schema 检测违反 xsd:unique 约束的情况
以下演示代码验证 XML 是否与给定的 XSD 匹配。 但它不会检测 XML 是否违反任何 xsd:unique 约束。为什么会这样,更重要的是,我如何验证唯一性
我正在尝试根据 XSD 验证 XML 文档,但我似乎无法解决以下错误: 元素名称“Elektriciteit”无效。 预期出现以下情况之一: - VloeibareBiobra...
使用未在 XML 中显式定义但存在于 XSD 中的默认命名空间时,如何使 XML 通过 XSD 验证
我有一个 XML,由于以下问题而验证失败: 元素“example:lotNumber”的前缀“example”未绑定。行“4”,列“19”。 前缀“考试...
无效架构或缺少命名空间 - 通过 notepad++ 进行 XML 验证
我正在尝试通过 notepad++ 验证 XML 文件,但出现以下错误: 架构无效或缺少命名空间 当我通过另一个 XML 验证器进一步调查时,我收到以下错误: ...
我有一个 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 文档中使用相同的命名空间,请在开始和结束标记的前缀中添加该命名空间。它有效。
我正在尝试向 Swift Alliance Access(SAA) 发送 XML 消息。我的示例 xml 消息如下所示。但我收到“无效的 XML 前缀”错误消息。当我根据 XSD 检查 XML 时。它
如果 XSD 作为文件或资源加载,我在 XML 验证中会遇到不同的行为。 如果我将 XSD 作为文件加载,一切都很好并且验证工作正常: SchemaFactory sf = SchemaFa...