加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

对XSD schema文件中elementFormDefault属性的理解

发布时间:2020-12-15 23:21:44 所属栏目:百科 来源:网络整理
导读:Schema中的elementFormDefault elementFormDefault取值:qualified 或者 unqualified 在http://www.velocityreviews.com/forums/t292290-xsd-what-is-elementformdefault-qualified-for.html这个网站,发现Boris的回答: All"qualified" elements and attrib

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 aswitchfor 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").

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读