Xsd XML架构:没有支持元素的AttributeGroup?重复属性?
我的任务是为xml文档编写一个具有支持模式的解析器,该模式是由据称比我更聪明、更有经验的人创建的。然而,我不是xml专家,从我所能说的来看,我相信他们的模式中缺少了一些考虑因素 下面是我所给出的模式的简化版本:Xsd XML架构:没有支持元素的AttributeGroup?重复属性?,xsd,Xsd,我的任务是为xml文档编写一个具有支持模式的解析器,该模式是由据称比我更聪明、更有经验的人创建的。然而,我不是xml专家,从我所能说的来看,我相信他们的模式中缺少了一些考虑因素 下面是我所给出的模式的简化版本: <?xml version="1.0"?> <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault=
<?xml version="1.0"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified">
<xsd:attributeGroup name="Group1">
<xsd:attribute name="attrib1" type="xsd:NMTOKENS"/>
<xsd:attribute name="attrib2" type="xsd:NMTOKENS"/>
</xsd:attributeGroup>
</xsd:schema>
在我回到我的客户那里批评他们的模式设计之前,我非常感谢集体智慧为我确认或否认以下几点:
<?xml version="1.0"?>
<element1 attrib1="first second third" attrib1="first second third"/>
无效,因为存在重复的“attrib1”,对吗
- 我被告知,我可能会收到具有重复属性的文档。我想告诉我的客户,模式需要反映这种可能性(如果可能的话…)。有没有办法定义一个可以出现多次的属性?我知道“maxOccurs”属性,但我不认为这对属性定义有效李>
<element ns1:attrib="value" ns2:attrib="value"/>
属性组中的属性
在有效时间内只能发生一次
xml文档。例如:
<?xml version="1.0"?>
<element1 attrib1="first second third" attrib1="first second third"/>
无效,因为存在
重复“attrib1”,对吗
您的代码示例很清楚:这在XML中是不允许的。As:“属性名不能在同一开始标记或空元素标记中出现多次。”同样,您在代码示例上面编写的声明也不完全正确。同一属性可能会在有效的XML文档中多次出现。它只需要出现在不同的元素上。不允许在一个元素上复制属性。但是,可以复制元素,使它们都具有相同的属性
<element ns1:attrib="value" ns2:attrib="value"/>
不允许:
<element1 attrib1="first second third" attrib1="first second third"/>
允许的:
<element1 attrib1="first second third"/>
<element1 attrib1="first second third"/>
作为一种特殊情况,重复的属性名称应用于属性的扩展名称
<element ns1:attrib="value" ns2:attrib="value"/>
如果两个前缀
ns1
和ns2
解析为相同的命名空间URI,则不允许使用此选项。感谢您的回复。我同意你的观点,我在代码示例之前的陈述是不正确的。我打算解释代码示例中的显式内容。我会解决的。我想我理解您关于“host”元素的观点,以及他们的模式定义在技术上不是一个错误。我的问题是,无论出于何种目的,该模式都是“父”模式,因此,在该模式中缺少“主机”元素,不会从本质上限制在有效实例文档中使用attributeGroup中的这些属性吗?再次感谢您的投入@你的假设是正确的。如果此架构没有:1)具有属性foobar
的任何元素,2)具有
的任何元素(因此它可以包含任何属性),以及3)任何
或
定义,那么,作为该模式文件实例的文档不能包含属性foobar
,即使该模式具有该属性的全局属性定义。