以文本方式查看主题 - 中文XML论坛 - 专业的XML技术讨论区 (http://bbs.xml.org.cn/index.asp) -- 『 DTD/XML Schema 』 (http://bbs.xml.org.cn/list.asp?boardid=23) ---- 菜鸟发问:schema里有两个element的name相同,可以吗? (http://bbs.xml.org.cn/dispbbs.asp?boardid=23&rootid=&id=32509) |
-- 作者:yihui -- 发布时间:5/16/2006 5:59:00 PM -- 菜鸟发问:schema里有两个element的name相同,可以吗? 刚接触xml不久,最近要用到本行业内的一个报文标准(.xsd),其中有部分类似这样的代码: <xs:element name="A"> <xs:complexType> <xs:sequence> <xs:element name="a1" type="xs:string"> <xs:element name="a2" maxOccurs="4"> <xs:complexType> <xs:sequence> <xs:element ref="b1"> <xs:element name="b2" type="xs:string"> </xs:sequence> <xs:complexType> </xs:element> </xs:sequence> <xs:complexType> </xs:element> <!--省略b1的说明代码--> <xs:element name="a2"> <xs:complexType> <xs:sequence> <xs:element ref="b1"> <xs:element name="b2" type="xs:string"> <xs:element name="b3" type="xs:string"> <xs:element name="b4" type="xs:string"> </xs:sequence> <xs:complexType> </xs:element> 以上代码中,出现了两个name为"a2"的element,可以吗? |
-- 作者:gemingke -- 发布时间:5/16/2006 6:41:00 PM -- 用xmlspy检验时通过,可能可以。 |
-- 作者:yihui -- 发布时间:5/17/2006 8:15:00 AM -- 还是有疑问,在xml文件里,"a2"的格式到底该用哪个呢? |
-- 作者:gemingke -- 发布时间:5/17/2006 11:46:00 AM -- 格式?请详细点 |
-- 作者:yihui -- 发布时间:5/17/2006 4:25:00 PM -- 例如,在xml文件里,实例化元素"A"时,当实例化、到它的子元素a2式,它(a2)的格式应该符合xsd里的哪个"a2"的格式呢?第一个(b1,b2)还是第二个(b1,b2,b3,b4)呢?为什么? 那个格式是水运行业的一个报文标准,没看过其相应的xml文件,所以对两个同名的element比较奇怪,请高手指教。 |
-- 作者:98900969r -- 发布时间:5/17/2006 9:40:00 PM -- schema里元素定义是分局部的和全局的两种。一个元素定义,如果它是schema中schema元素的(直接)子元素,则为全局定义。否则,为局部定义。 所谓全局元素定义,并不是指这个被定义的元素将是实例文档中的根元素或者根元素的(直接)子元素,而是指该(元素)定义具有全局性,可以在整个schema中引用。凡引用之处,该元素的结构则如所引用的全局定义中规定的结构。明白了全局元素定义,就不难明白局部元素定义。可想而知,局部元素定义是一次性的,仅在“此处“有效的,在别处不能引用的。 那么很明显,不同的全局元素定义是不能定义同名的元素的,而不同地方的局部元素定义是可以定义同名(但不同地方,即不同路径)的元素的。此外,局部元素定义 是可以 定义 与 全局元素定义所定义的元素 同名的元素 的。这不会导致混淆,因为全局元素定义是将被在某(局部)处引用,而不是在该处被定义的。 你在5楼问的问题,根据你在1楼给的schema可知,A中的那个a2元素的结构应该为schema中A元素定义中a2元素定义所定义的结构,即(b1, b2),而不是另外那个a2定义所定义的结构,即(b1, b2, b3, b4)。
[此贴子已经被作者于2006-5-17 23:44:36编辑过]
|
-- 作者:yihui -- 发布时间:5/18/2006 8:30:00 AM -- 明白了,谢谢98900969r,gemingke! |
-- 作者:gemingke -- 发布时间:5/18/2006 12:40:00 PM -- 俺就是一凑数的~~~~呵呵 |
-- 作者:idzzn -- 发布时间:11/17/2006 9:54:00 AM -- 补充一下: 如果一个路径中引用一个全局元素,那么在同一个路径下就不能使用与这个全局元素同名的局部元素 不知道说得对不对? |
-- 作者:zldou -- 发布时间:11/24/2006 6:05:00 PM -- 6楼的好牛啊,向你学习 |
-- 作者:tianyazi -- 发布时间:6/1/2007 11:10:00 AM -- 俺是新手: 想请问大侠: <xs:element name="A1"> 中的<simpleType> |
-- 作者:ohaiyo -- 发布时间:6/29/2007 1:27:00 AM --
试一下, 在同一路径下不能出现同名的局部元素和全局元素 |
-- 作者:c123123 -- 发布时间:6/21/2010 11:43:00 AM -- 最好使用不同的命名空间 |
W 3 C h i n a ( since 2003 ) 旗 下 站 点 苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》 |
125.000ms |