xml schema原有文档基础上嵌入自定义xml属性

因工作需要实现公司自研的工作流bpmn规范化。研发过程总发现需要学习xml schema来自定义本公司自身产品独有的属性。参考activity和camunda两款工作流产品。现做几点总结:

  • 1.xml约束分dtd和schema两种,dtd简单容易上手,但是工作中却基本不用,而是使用复杂的schema(支持更丰富和更复杂的数据类型)。网上的博客关于schema的基本只是入门(浅尝辄止)难以符合真正开发需要。不过在菜鸟教程和w3c中都有完整的教程和使用案例,需要学习或者使用schema建议直接看这些教程而不是只看博客。链接一:https://www.runoob.com/schema/schema-tutorial.html链接二:https://www.w3school.com.cn/schema/index.asp
  • 2.关于schema中的命名空间,搜了一大圈感觉都没有一个靠谱或者易懂的讲解。最后我自己几次尝试后,给出以下解释,命名空间的属性和属性值都是可以随便自定义的,只要不和原有的重复既可以,多数是取自己公司的网站名,仅仅是一个标识作用而已。参考下面的Camunda xml的文件头部定义xmlns:camunda="http://camunda.org/schema/1.0/bpmn" ,这里的camunda可以改成任何不重复的字段,一般取自己产品的名字,这里的“http://camunda.org/schema/1.0/bpmn”也不需要是个网址,任何唯一标识都可以,你可以随意改成自己公司的网址也行,类似于一个声明,我是唯一的,跟你们bpmn:不一样,我也可以 写自己的属性。当然这里要和schema中的这个要一致。


  
    
      SequenceFlow_14ixhwl
    
    
      SequenceFlow_14ixhwl
    
    
    
    
  
  
    
      
        
        
          
        
      
      
        
        
          
        
      
      
        
        
      
      
        
      
      
        
      
    
  

xml schema原有文档基础上嵌入自定义xml属性_第1张图片

  • 3.schema教程中的复杂类型和anyattribute章节要细看。尤其是anyattribute可以解决xml在原有的属性中嵌入一些新属性。

xml schema原有文档基础上嵌入自定义xml属性_第2张图片

  • 4.关于bpmn规范化,bpmn中提供了元素可供各厂家拓展使用。
  • 5.关于xml解析常使用dom4j,用xpath解析也很方便,注意使用xpath的时候不仅需要引入dom4j还要引入jaxen不然运行会报错。
dependencies>


    

        dom4j

        dom4j

        1.6.1

    





    

        jaxen

        jaxen

        1.1.1

    

如有xml、schema约束不懂得地方欢迎留言探讨,需要参考bpmn2.0规范化demo项目的同学也可以联系我,后面开源。

你可能感兴趣的:(xml,schema)