Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么我的XSD允许在XML中使用禁止的属性?_Xml_Xsd_Xsd Validation_Xml Validation - Fatal编程技术网

为什么我的XSD允许在XML中使用禁止的属性?

为什么我的XSD允许在XML中使用禁止的属性?,xml,xsd,xsd-validation,xml-validation,Xml,Xsd,Xsd Validation,Xml Validation,我已经将一个名为教室的属性插入到名为讲座的元素中。以下是XML模式: <xsd:attribute name="Classroom" use="required"> <xsd:simpleType> <xsd:restriction base="xsd:string"> <xsd:minLength value="0"/> <xsd:maxLength value="7"/> </x

我已经将一个名为教室的属性插入到名为讲座的元素中。以下是XML模式:

<xsd:attribute name="Classroom" use="required">
<xsd:simpleType>
    <xsd:restriction base="xsd:string">
        <xsd:minLength value="0"/>
        <xsd:maxLength value="7"/>
    </xsd:restriction>
</xsd:simpleType>

。
.
.
.
.
.
我遇到的问题是,这个模式没有对属性应用限制。 我尝试验证此XML代码:

 <Lab>
                <Title>Artificial Intelligence</Title>
                <Lecture Classroom="BA">    
                    <Day>Friday</Day>
                    <Time>17:00-18:00</Time>
                </Lecture>                  
    </Lab>

人工智能
星期五
17:00-18:00
我的问题是,这个XML被报告为有效的,即使它使用了属性“教室”(它不应该这样做)。 我是XML新手,所以请不要太苛刻。
提前谢谢你

您的
演讲声明

<xsd:element name="Lecture" maxOccurs="10" minOccurs="1"/>
上述XSD将允许
讲座
上的
教室
属性,但将值限制为长度介于0和7之间的字符串(包括0和7)

您还可以添加
xs:attribute/use=“违禁”
,以防止
@chool
出现在
讲座中,但您的原始标题和问题的这一部分

我遇到的问题是,此模式不应用 对属性的限制


暗示你的问题的焦点是为什么限制没有效果。也许你指的是一般意义上的任何限制--
xs:restriction
use=“problem”
。答案是一样的:通过不给
讲座
指定类型,您允许它具有任何类型和属性。

您的
讲座
声明

<xsd:element name="Lecture" maxOccurs="10" minOccurs="1"/>
上述XSD将允许
讲座
上的
教室
属性,但将值限制为长度介于0和7之间的字符串(包括0和7)

您还可以添加
xs:attribute/use=“违禁”
,以防止
@chool
出现在
讲座中,但您的原始标题和问题的这一部分

我遇到的问题是,此模式不应用 对属性的限制


暗示你的问题的焦点是为什么限制没有效果。也许你指的是一般意义上的任何限制--
xs:restriction
use=“problem”
。答案是一样的:通过不给
讲座
指定类型,您允许它具有任何类型和属性。

分类空间中键入
(只有1个's')



问题的另一部分是属性限制应用于
Lab
元素,而不是
teaching
元素。

Clasroom
中输入错误(仅1's')



问题的另一部分是属性限制应用于
Lab
元素,而不是
teaching
元素。

禁用的
(+1)有很好的理解。最初的标题提到了“限制”,但您可能是对的,OP想知道为什么一般意义上的属性限制,包括
use=“违禁”
,对XML没有影响。我坚持认为,根本原因是未能为
讲座指定类型。对
禁止的
(+1)有很好的理解。最初的标题提到了“限制”,但您可能是对的,OP想知道为什么一般意义上的属性限制,包括
use=“违禁”
,对XML没有影响。我认为根本原因是未能为
讲座
指定类型。
<xs:schema  xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:element name="Lab">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="Title" type="xs:string"/>
        <xs:element name="Lecture">
          <xs:complexType>
            <xs:sequence>
              <xs:element name="Day" type="xs:string"/>
              <xs:element name="Time" type="xs:string"/>
            </xs:sequence>
            <xs:attribute name="Classroom">
              <xs:simpleType>
                <xs:restriction base="xs:string">
                  <xs:minLength value="0"/>
                  <xs:maxLength value="7"/>
                </xs:restriction>
              </xs:simpleType>              
            </xs:attribute>
          </xs:complexType>
        </xs:element>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
</xs:schema>
<xsd:attribute name="Clasroom" use="prohibited"/>