首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >XML的XPath验证规则

XML的XPath验证规则
EN

Stack Overflow用户
提问于 2022-09-25 07:07:37
回答 1查看 46关注 0票数 0

我有以下XML -

代码语言:javascript
复制
<root>
  <CUSTOMER_ID>0010059863</CUSTOMER_ID>
  <PO_NUMBER>6873w/PO_NUMBER>
  <VENDOR_ORDER_NUMBER>0038447</VENDOR_ORDER_NUMBER>
</root>

我需要创建一个Xpath,它应该满足以下条件-

  1. 客户ID长度应该从1到10。不应该是空字符串,它应该始终存在于XML.

中。

  1. PO_NUMBER长度应从1到20。PO_NUMBER可以是空白的,甚至可以不存在于XML中。但是如果它是唯一的并且没有VENDOR_ORDER_NUMBER.

,它必须有一个值。

  1. VENDOR_ORDER_NUMBER长度应该从1到10。VENDOR_ORDER_NUMBER可以是空白的,甚至可以不存在于XML中。但是,如果它是唯一的,并且没有PO_NUMBER.

,那么它必须有一个值。

  1. 至少有一个PO_NUMBER或VENDOR_ORDER_NUMBER应该存在于XML中。它们都可以出现在XML中。

  1. 我们必须检查字段长度是否满足。

  1. 供应商号和PO_number可以作为空白标记存在于XML中.

我写了以下几封信

boolean(//CUSTOMER_ID) and boolean(//VENDOR_ORDER_NUMBER) and count(//PO_NUMBER)=0 and string-length(//VENDOR_ORDER_NUMBER)<=10 and //VENDOR_ORDER_NUMBER!="" and string-length(//CUSTOMER_ID)<=10 and //CUSTOMER_ID!="" or boolean(//CUSTOMER_ID) and boolean(//PO_NUMBER) and count(//VENDOR_ORDER_NUMBER)=0 and string-length(//PO_NUMBER)<=10 and //PO_NUMBER!="" and string-length(//CUSTOMER_ID)<=10 and //CUSTOMER_ID!="" or (boolean(//CUSTOMER_ID) and boolean(//VENDOR_ORDER_NUMBER) and boolean(//PO_NUMBER) and string-length(//VENDOR_ORDER_NUMBER)<=10 and //VENDOR_ORDER_NUMBER!="" and string-length(//CUSTOMER_ID)<=10 and //CUSTOMER_ID!="" and string-length(//PO_NUMBER)<=20) or (boolean(//CUSTOMER_ID) and boolean(//VENDOR_ORDER_NUMBER) and boolean(//PO_NUMBER) and string-length(//PO_NUMBER)<=20 and //PO_NUMBER!="" and string-length(//CUSTOMER_ID)<=10 and //CUSTOMER_ID!="" and string-length(//VENDOR_ORDER_NUMBER)<=10)

EN

回答 1

Stack Overflow用户

发布于 2022-09-25 09:09:38

这似乎是Schematron的一项任务,例如给您一个开始:

代码语言:javascript
复制
<schema xmlns="http://purl.oclc.org/dsdl/schematron" queryBinding="xslt3">
    <pattern>
        <rule context="root">
          <report test="CUSTOMER_ID">root element has CUSTOMER_ID child.</report>
          <report test="PO_NUMBER | VENDOR_ORDER_NUMBER">At least one of PO_NUMBER or VENDOR_ORDER_NUMBER should be present in the XML.</report>
        </rule>
        <rule context="root/CUSTOMER_ID">
          <report test="string-length() = (1 to 10)">Length of CUSTOMER_ID is between 1 and 10.</report>
        </rule>
    </pattern>
</schema>

我没有详细说明所有的规则,也不确定它们是否都是一致的(有些规则需要一定的字符串长度,还有一些则允许空值)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73842647

复制
相关文章

相似问题

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