我有这个xml来验证:
<row Id="411" TagName="python" Count="9" ExcerptPostId="7058" WikiPostId="7057"/>
<row Id="413" TagName="faces" Count="3" ExcerptPostId="5232" WikiPostId="5231"/>
<row Id="414" TagName="global" Count="8" ExcerptPostId="5270" WikiPostId="5269"/>
<row Id="415" TagName="wikimedia-commons" Count="5" ExcerptPostId="5301" WikiPostId="5300"/>
<row Id="416" TagName="photographs" Count="7"/>
但是,如果我将id定义为xs:ID它给我错误411不是有效的NCNAME ...似乎ID不能是一个整数而且不知道为什么,理论上是一个格式良好的字符串。
<xs:complexType name="typeRow">
<xs:attribute name="Id" type="xs:ID" use="required"/>
<xs:attribute name="TagName" type="xs:string" use="required"/>
<xs:attribute name="Count" type="xs:positiveInteger" use="required"/>
<xs:attribute name="ExcerptPostId" type="xs:positiveInteger"/>
<xs:attribute name="WikiPostId" type="xs:positiveInteger"/>
</xs:complexType>
我怎么能写出xml中的Id是一个ID(唯一且显然无法重复)
谢谢
根据xsd类型定义:类型xsd:ID用于唯一标识XML文档中元素的属性。 xsd:ID值必须是NCName。这意味着它必须以字母或下划线开头,并且只能包含字母,数字,下划线,连字符和句点。
而不是使用xs:ID
,在模式中定义xs:unique
约束。如果行是rows
元素的子元素,则需要
<xs:element name="rows">
<xs:complexType>....</xs:complexType>
<xs:unique name="rowID">
<xs:selector xpath="row"/>
<xs:field xpath="@Id"/>
</xs:unique>
</xs:element>