Xml 单个元素下的多个xs:id属性-XSD定义
我在Intellij2015(IJ)中遇到一个错误,当时我试图用一个具有两个类型为“xs:ID”的属性的元素定义一个XSD。不幸的是,我从一个早已离开的人那里继承了这段代码,所以不确定他们到底想实现什么 以下是XSD的精简版本:Xml 单个元素下的多个xs:id属性-XSD定义,xml,xsd,xsd-validation,xml-validation,Xml,Xsd,Xsd Validation,Xml Validation,我在Intellij2015(IJ)中遇到一个错误,当时我试图用一个具有两个类型为“xs:ID”的属性的元素定义一个XSD。不幸的是,我从一个早已离开的人那里继承了这段代码,所以不确定他们到底想实现什么 以下是XSD的精简版本: <?xml version="1.0" encoding="ISO-8859-1" ?> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"> ... <xs:ele
<?xml version="1.0" encoding="ISO-8859-1" ?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
...
<xs:element name="visitor-test">
<xs:complexType>
...
<xs:attribute name="null-node" type="xs:ID" default="null-node"/>
<xs:attribute name="null-id" type="xs:ID" default="null-id"/>
</xs:complexType>
</xs:element>
</xs:schema>
...
...
这是XML的开头,有一个错误:
<?xml version="1.0" encoding="UTF-8"?>
<visitor-test xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="visitor-test-schema.xsd" null-id="f">
IJ用红色下划线并抱怨:
属性“null id”不允许出现在元素“访问者测试”中
什么有效:
null node=“f”>
xs:String
,例如
此外,#1和#2一起意味着只有XSD中定义的第一个属性似乎有效,后续属性是不允许的。奇怪的是,这两个属性都是IDE建议的。在XSD1.0中键入
xs:ID
[Definition:]ID表示[XML 1.0]中的ID属性类型
(第二版)]
派生自XML/DTD中的ID
属性类型
元素类型不能指定多个ID属性
您可以看到,每个元素类型只允许一个ID
属性
可供选择的方法和方法没有此类限制
注意:在XSD 1.1中,允许每个元素具有多个
ID
属性:
一个元素现在可能有多个xs:ID
类型的属性。元素
始终能够有多个xs:ID类型的子项,但是
XSD 1.0禁止此类型的多个属性与兼容
XML DTD。(要翻译成DTD形式的模式应该
仍然避免这种做法。)此更改应该使XML更容易使用
支持现有ID
属性和xml:ID
的词汇表
(感谢Michael Kay的帮助更新。)注意,XSD 1.1中不再存在此规则。参见G1.7:一个元素现在可能有多个xs:ID类型的属性。元素总是能够有多个xs:ID类型的子元素,但是为了与XML DTD兼容,XSD 1.0禁止了这种类型的多个属性。(打算翻译成DTD形式的模式仍然应该避免这种做法。)这一更改应该使XML词汇表更容易支持现有的ID属性和XML:ID。@MichaelKay:值得注意。答案已更新。谢谢,谢谢,这很有道理。兼容性问题。