Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/14.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
如何定义具有模式的XML模式ID属性?_Xml_Xsd_Definition - Fatal编程技术网

如何定义具有模式的XML模式ID属性?

如何定义具有模式的XML模式ID属性?,xml,xsd,definition,Xml,Xsd,Definition,这个XML似乎表示ID派生类型支持一个模式,但当我试图用以下代码定义一个模式时: > …我在oXygen XML编辑器中发现一个错误,该错误表示“courseNumber”的内容必须匹配(注释?,(simpleType?)。从:pattern开始发现问题。 我是否为该ID属性正确定义了模式?如果需要限制内置的简单数据类型,则应创建自己的simpleType。使用。试着这样做: <simpleType name='better-ID'> <restriction ba

这个XML似乎表示ID派生类型支持一个模式,但当我试图用以下代码定义一个模式时:


>

…我在oXygen XML编辑器中发现一个错误,该错误表示“courseNumber”的内容必须匹配(注释?,(simpleType?)。从:pattern开始发现问题。


我是否为该ID属性正确定义了模式?

如果需要限制内置的简单数据类型,则应创建自己的
simpleType
。使用。试着这样做:

<simpleType name='better-ID'>
  <restriction base='ID'>
    <pattern value='(\d{3}).(\d{3})'/>
  </restriction>
</simpleType>

<complexType name="CourseType">
      ...
      <attribute name="courseNumber" type="better-ID"/>
      <attribute name="numOfCredits" type="university:CourseCredits" />
</complexType>

另请参见下面的@jasso注释,以修复XSD中的其他一些错误。

这个想法是正确的,但此解决方案存在一些问题
complexType
不能包含作为直接子级的
元素。所有
元素
都需要是单个
所有
选项
序列
元素的后代。属性也需要在元素容器后面定义。@kchau,@Shcheklein:OP指定的ID模式似乎也很奇怪。IIRC\d表示十进制数,因此可以包含一个点。因此,ID仅包含数字和1-3个点。但是它应该是一个有效的
xs:ID
,但是
ID
s必须是有效的NCNames,所以不能以数字开头!要么是我弄错了,要么是你的作业中有个“错误”。@jasso:谢谢你的更正。我无法修复我答案中的代码,因为我不知道@kchau到底想要什么-序列、组、选择。但是,修复了我的回答,提到了您的评论。\d在本例中没有为我选择小数点:,但我认为您已经指出了我做错的地方。我想保留匿名类型,但我定义错了。是的,我也省略了元素的分组。而且,是的,我修改了我的ID模式以包含一个两个字母的前缀,这样一个有效的ID看起来像“CS605.444”。谢谢你们的帮助。
<simpleType name='better-ID'>
  <restriction base='ID'>
    <pattern value='(\d{3}).(\d{3})'/>
  </restriction>
</simpleType>

<complexType name="CourseType">
      ...
      <attribute name="courseNumber" type="better-ID"/>
      <attribute name="numOfCredits" type="university:CourseCredits" />
</complexType>
   <complexType name="CourseType">
          ...
          <attribute name="courseNumber">
              <simpleType>
                  <restriction base='ID'>
                     <pattern value='(\d{3}).(\d{3})'/>
                  </restriction>
              </simpleType>
          </attribute>
          <attribute name="numOfCredits" type="university:CourseCredits" />
    </complexType>