首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么number不是有效的NCName

为什么number不是有效的NCName
EN

Stack Overflow用户
提问于 2019-02-28 19:00:40
回答 2查看 1.5K关注 0票数 1

我需要验证这个xml:

代码语言:javascript
复制
 <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...Seems,ID不能是一个整数,也不知道为什么,理论上是一个格式良好的字符串。

代码语言:javascript
复制
<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 (唯一,显然不能重复)

谢谢

EN

回答 2

Stack Overflow用户

发布于 2019-02-28 19:14:21

根据xsd类型定义:xsd:ID类型用于唯一标识文档中的元素的属性。xsd:id值必须是NCName。这意味着它必须以字母或下划线开头,并且只能包含字母、数字、下划线、连字符和句点。

票数 1
EN

Stack Overflow用户

发布于 2019-02-28 20:42:16

在您的模式中定义xs:unique约束,而不是使用xs:ID。如果行是rows元素的子元素,则需要

代码语言:javascript
复制
<xs:element name="rows">
  <xs:complexType>....</xs:complexType>
  <xs:unique name="rowID">
    <xs:selector xpath="row"/>
    <xs:field xpath="@Id"/>
  </xs:unique>
</xs:element>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54924156

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档