Xml 如何为同名但内容不同的元素编写有效的xsd
我们在编写正确(有效)的xsd时遇到一些问题: -xsd应该在上进行验证 -应该可以将架构添加到sql server架构集合(将XML架构集合测试创建为“[xsd here]” -我们需要在xsd中指定“title”属性值 这是(大大简化的)XML结构: 1) 这是我们的第一个版本(显然是无效的):您不能有两个名为“input”的不同元素Xml 如何为同名但内容不同的元素编写有效的xsd,xml,xsd,Xml,Xsd,我们在编写正确(有效)的xsd时遇到一些问题: -xsd应该在上进行验证 -应该可以将架构添加到sql server架构集合(将XML架构集合测试创建为“[xsd here]” -我们需要在xsd中指定“title”属性值 这是(大大简化的)XML结构: 1) 这是我们的第一个版本(显然是无效的):您不能有两个名为“input”的不同元素 2) 第二次尝试: <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" eleme
2) 第二次尝试:
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified">
<xsd:element name="test" type="Test"/>
<xsd:complexType name="input1">
<xsd:attribute name="title" fixed="Pretty title" use="required"/>
</xsd:complexType>
<xsd:complexType name="input2">
<xsd:attribute name="title" fixed="Different title" use="required"/>
</xsd:complexType>
<xsd:complexType name="Test">
<xsd:sequence>
<xsd:element name="input" type="input1"/>
<xsd:element name="input" type="input2"/>
</xsd:sequence>
</xsd:complexType>
- org出现了与以前相同的错误消息:{None}:input的非法重新声明
- xmlspy告诉我们它是一个有效的xsd
- sql server引发错误:“Test”类型的内容模型包含两个名称相同的“input”元素和不同的类型、可空性或值约束
XSD规范定义了一个约束“Element Declarations Consistent”,其作用是当两个同级元素具有相同的名称时,它们也必须具有相同的类型
XMLSpy以不强制执行规范中的一些更棘手的规则而闻名。我不知道这是因为他们没有抽出时间来编写代码,还是因为他们觉得自己的版本有所改进,但使用一致性方法更严格的工具检查模式总是一个好主意(Xerces在这方面实际上比W3C MSV服务更强大).您是否尝试过使用属性组?您对具有多个
输入声明的要求是什么?据我所知,我们不能使用属性组,因为“固定”属性在这两种情况下都不同。这就是为什么需要声明两个不同的输入元素的原因。因此您可以使用两个属性组,但在您对input
type的定义中,只指定其中一个组可以使用,但不能同时使用这两个组。我不确定我头脑中的语法,但我认为这是可能的。这是否意味着我们不能为我最后粘贴的xml结构编写“严格”的模式定义?那么t xsd 1.1?这会给我们提供足够的自由吗?
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified">
<xsd:element name="test" type="Test"/>
<xsd:complexType name="input1">
<xsd:attribute name="title" fixed="Pretty title" use="required"/>
</xsd:complexType>
<xsd:complexType name="input2">
<xsd:attribute name="title" fixed="Different title" use="required"/>
</xsd:complexType>
<xsd:complexType name="Test">
<xsd:sequence>
<xsd:element name="input" type="input1"/>
<xsd:element name="input" type="input2"/>
</xsd:sequence>
</xsd:complexType>
<?xml version="1.0" encoding="UTF-8"?>
<ZForm title="main title" attachment="attachment1" type="NM08">
<Part title="part title">
<SubTitle code="I.1)" title="title 1"/>
<ShortText title="short text title 1"/>
<SubTitle code="I.2)" title="title 2" subtitle="subtitle 1"/>
<SelectList type="select type" title="select title"/>
<ShortText title="short text title 2"/>
<MultiSelectList type="multiType2" title="multi select title"/>
<RadioButtonList type="yesNo" title="lala"/>
<SubTitle code="I.3)" title="some other title" subtitle="what?"/>
<MultiSelectList type="multiType2" title=""/>
</Part>
<Part title="second part title">
<Repeater add="add a new repeater item" remove="remove last repeating part">
<RepeatingPart>
<SubTitle code="II.1)" title="tiiiiiitle"/>
<ShortText/>
</RepeatingPart>
</Repeater>
</Part>
</ZForm>