使用XML词汇表编写验证规则

时间:2011-03-05 20:54:37

标签: xml xsd

有人可以给我一个如何在xml中使用自定义标签编写规则的示例,要求是我需要在xml中编写规则(例如:规则1:在采购订单中,如果客户发送到许多不同的地址,那是一个欺诈性的交易。)

一旦规则以xml编写,然后将其输出到xslt(这是任务的下一部分)

感谢您的帮助

1 个答案:

答案 0 :(得分:2)

Schematron

听起来就像你需要的一样。 Schematron文件是XML,可以编译成XSLT。您可以使用它来验证各种自定义业务规则和逻辑。

Schematron

  

Schematron基本不同   来自其他模式语言的概念   它不是基于语法而是基于语法   在解析中找到树模式   文献。这种方法允许很多   要表示的各种结构   这是不方便和困难的   在基于语法的模式语言中。如果   你知道XPath或XSLT表达式   语言,你可以开始使用了   Schematron立刻。

     

它有免费和开源   实现可用。

     

Schematron很简单   在XSLT和。之上实现   定制。 (还有   Python和Perl中的实现)

     

Schematron允许您开发   并混合两种模式:

     

1。) 报告 元素可让您进行诊断   你是哪种语言的变体   处理。

     

2。) 断言 元素允许   你确认一下这份文件   符合特定架构。

     

在   Schematron基于一个简单的   动作:

     
      
  • 首先,找到一个上下文节点   基于文档(通常是元素)   在XPath路径标准;
  •   
  • 然后,检查   看看是否有其他一些XPath表达式   对于每个节点都是如此。
  •   

示例Schematron模式:

<sch:schema xmlns:sch="http://purl.oclc.org/dsdl/schematron"  > 
  <sch:title>Test number of shipping addresses</sch:title>   
  <sch:p>This schema tests whether multiple shipping addresses have been used. </sch:p>
  <sch:ns prefix="po" uri="http://example.org/PurchaseOrder" />     
  <sch:pattern  id="P1"> 
    <sch:rule context="po:order">
    <sch:report test="po:address[2]"
        >Multiple shipping addresses are not allowed</sch:report>
     </sch:rule>       
  </sch:pattern>
</sch:schema>