当前位置: 首页 > 知识库问答 >
问题:

如何生成只能验证强制字段的通用xsd

东方化
2023-03-14

我想编写一个xsd,它只通过强制字段的验证。

我在下面写了xsd的xml。

<Order OrderNo="12345" OrgCode="US">
    <OrderLines>
        <OrderLine OrderLineNo="1" OrderLineKey="1" />
        <OrderLine OrderLineNo="2" OrderLineKey="2" />
    </OrderLines>
</Order>

在上述xml中,OrderNo、OrgCode、OrderLineNo、OrderLineKey是必填字段。

我已经为上述xml编写了以下xsd。

<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:element name="Order">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="OrderLines">
          <xs:complexType>
            <xs:sequence>
              <xs:element name="OrderLine" maxOccurs="unbounded" minOccurs="0">
                <xs:complexType>
                  <xs:simpleContent>
                    <xs:extension base="xs:string">
                      <xs:attribute type="xs:byte" name="OrderLineNo" use="required"/>
                      <xs:attribute type="xs:byte" name="OrderLineKey" use="required"/>
                    </xs:extension>
                  </xs:simpleContent>
                </xs:complexType>
              </xs:element>
            </xs:sequence>
          </xs:complexType>
        </xs:element>
      </xs:sequence>
      <xs:attribute type="xs:short" name="OrderNo" use="required"/>
      <xs:attribute type="xs:string" name="OrgCode" use="required"/>
    </xs:complexType>
  </xs:element>
</xs:schema>

现在,我想让下面的xml对照上面的xsd进行验证,xsd具有一些可选的附加属性。具体如下:

<Order OrderNo="12345" OrgCode="US" Email="ab@gmail.com">
    <OrderLines>
        <OrderLine OrderLineNo="1" OrderLineKey="1"  Qty="2"/>
    </OrderLines>
</Order>

我希望我的xsd以允许任意数量的可选属性(Email、Qty和任何非强制属性)和元素的方式编写。即使它们没有在xsd中定义。

共有1个答案

孔才
2023-03-14

可以在希望添加未指定元素的位置使用xs:any元素,在需要其他属性的位置使用xs:anyAttribute元素。

要使示例有效,您需要将其更改为

<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:element name="Order">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="OrderLines">
          <xs:complexType>
            <xs:sequence>
              <xs:element name="OrderLine" maxOccurs="unbounded" minOccurs="0">
                <xs:complexType>
                  <xs:simpleContent>
                    <xs:extension base="xs:string">
                      <xs:attribute type="xs:byte" name="OrderLineNo" use="required"/>
                      <xs:attribute type="xs:byte" name="OrderLineKey" use="required"/>
                      <xs:anyAttribute/>
                    </xs:extension>
                  </xs:simpleContent>
                </xs:complexType>
              </xs:element>
            </xs:sequence>
          </xs:complexType>
        </xs:element>
      </xs:sequence>
      <xs:attribute type="xs:short" name="OrderNo" use="required"/>
      <xs:attribute type="xs:string" name="OrgCode" use="required"/>
      <xs:anyAttribute/>
    </xs:complexType>
  </xs:element>
</xs:schema>
 类似资料:
  • 问题内容: 我试图在我的一种方法中建立用户输入验证系统…在一定程度上可以正常工作,但是尽管有代码,但它仍然允许整数作为有效输入,我不希望这样,我怎么能更改此代码,以仅允许将字母(字符串)作为有效输入。在这一点上,我感到困惑,我尝试使用整数对该系统进行测试,它可以完美地工作,但是使用字母,无济于事。 有见识? 问题答案: 更换 与 如果使用扫描仪,则仅检查下一步是否有 东西 ,特别是对于字母或其他物

  • cmf_get_verification_code($account, $length = 6) 功能 检查手机或邮箱是否还可以发送验证码,并返回生成的验证码 参数 $account: string 手机或邮箱 $length: int 验证码位数,支持4,6,8 返回 string 数字验证码

  • 问题内容: 我正在使用vaadin进行Java项目。现在,我有一个用户注册表格,看起来像这样: 当然,该表单除了显示之外不做任何其他事情。我想做的是,如果不满足某些要求,请让Vaadin在字段旁边显示错误消息。要求本身并不那么重要(假设我希望电子邮件字段至少包含8个字符)。我想知道的是:有没有简单的内置方法可以做到这一点?我在这里:https : //vaadin.com/api/com/vaad

  • 我正在创建一个基本的表单,出于某种原因,我在我的数字字段上得到了非常奇怪的HTML5验证。 代码如下。 你实际上在上面的代码中得到了同样的问题,但不同的值... 任何帮助都将不胜感激。

  • 本文向大家介绍使用java生成字母验证码,包括了使用java生成字母验证码的使用技巧和注意事项,需要的朋友参考一下 本文实例为大家分享了java生成字母验证码的具体代码,供大家参考,具体内容如下 以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持呐喊教程。

  • cmf_get_verification_code($account, $length = 6) 功能 检查手机或邮箱是否还可以发送验证码,并返回生成的验证码 参数 $account: string 手机或邮箱 $length: int 验证码位数,支持4,6,8 返回 string 数字验证码