zoukankan      html  css  js  c++  java
  • 对XSD schema文件中elementFormDefault属性的理解

    Schema中的elementFormDefault

    elementFormDefault取值:qualified 或者 unqualified

     

    http://www.velocityreviews.com/forums/t292290-xsd-what-is-elementformdefault-qualified-for.html这个网站,发现Boris的回答:

    All"qualified" elements and attributes are in the targetNamespace of the
    schema and all "unqualified" elementsand attributes are in no namespace.
    All global elements and attributes are qualified.

    意思是这样的:

    1、在xml中,所有引用xsd的全局的元素都必须加上命名空间的前缀

    (例如xmlns:aa=http://www.example.org/classroom,全局元素都得加上aa)。

    2、非全局的元素当设置为qualified时,必须添加命名空间的前缀。

    3、非全局的元素当设置为unqualified时,不必也不能添加前缀。

    下面是一个简单的例子:

    a.  当设置为unqualified时,user为全局元素(可作为根元素)必须添加前缀,非全局元素

    (id,name)不必添加前缀。



    b.  当设置为qualified时,所有的元素都必须添加前缀。



    其实elementFormDefault的qualified/unqualified还与schema的设计模式有关系,目前常用的有Russian Roll , Salami Slice , Venetian Blind

    详细及最佳实践可以参照:http://www.xfront.com/GlobalVersusLocal.html#BestPractice

    Salami Slice这种schema的设计模式,将所有的元素设置为全局元素,设置不设置elementFormDefault是没有任何意义的,文章的开通说过,所有的全局元素必须添加前缀。

    http://www.xfront.com/GlobalVersusLocal.html#BestPractice

    上网站中提到的Venetian Blind的优势之一:

    UseelementFormDefault to act as a switch for controlling namespaceexposure - if you want element namespaces exposed in instance documents, simplyturn the elementFormDefault switch to "on" (i.e, setelementFormDefault= "qualified"); if you don't want elementnamespaces exposed in instance documents, simply turn the elementFormDefaultswitch to "off" (i.e., setelementFormDefault="unqualified").

     


  • 相关阅读:
    2021.4.4(每周总结)
    2021.4.2
    2021.4.1
    2021.3.31
    2021.3.30
    2021.3.29
    2021.3.28(每周总结)
    2021.3.26
    C语言中指针与取地址符&详解
    使用JDBC连接、操作数据库、实现数据处理
  • 原文地址:https://www.cnblogs.com/oversea201405/p/3752023.html
Copyright © 2011-2022 走看看