如何限制XML Schema中的字符长度?

时间:2014-12-31 15:12:56

标签: xml xsd

我没有多少涉足xml,并试图通过一点点试图限制允许用户进入一个盒子的字符的最大值来谷歌。

这是我目前的代码:

    <xs:complexType name="reason">
      <xs:attribute name="reason">
        <xs:simpleType>
          <xs:restriction base="xs:string">
            <xs:maxLength value = "75"/>
          </xs:restriction>
        </xs:simpleType>
      </xs:attribute>
  </xs:complexType>

我们数据库中的字段名称称为reason,我已将字符长度定义为nvarchar(75)。

我也试图在xml上使用相同的名称作为属性名称。

目前发生的事情是,当用户输入超过75个字符时,会出现错误消息。

这告诉我对xsd文件的限制无法正常工作。

我缺少什么想法?

1 个答案:

答案 0 :(得分:1)

XML和XSD 而言,问题的答案是

  

如何限制XML Schema中的字符长度?

是这个XML,其reason/@reason长度不超过75个字符,

<reason reason="No more than 75 characters."/>

对此XSD有效:

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
           version="1.0">

  <xs:element name="reason" type="reason"/>

  <xs:complexType name="reason">
    <xs:attribute name="reason">
      <xs:simpleType>
        <xs:restriction base="xs:string">
          <xs:maxLength value = "75"/>
        </xs:restriction>
      </xs:simpleType>
    </xs:attribute>
  </xs:complexType>
</xs:schema>

说明:

  1. 您在XSD定义中处于正确的轨道上。
  2. &#34;我也尝试使用相同的名称作为xml上的属性名称。&#34; 请不要将属性,元素和类型命名为相同。 你可以,但风格不好。
  3. 正如您对问题的评论所述,违规行为如何 处理长度约束(如果有的话)取决于软件 处理XML。您似乎希望该软件可以执行 在尝试将其加载到您的XSD之前XSD的约束 数据库。这是合理的期望,但不是你认为理所当然的。