以文本方式查看主题 - 中文XML论坛 - 专业的XML技术讨论区 (http://bbs.xml.org.cn/index.asp) -- 『 DTD/XML Schema 』 (http://bbs.xml.org.cn/list.asp?boardid=23) ---- 请教大家关于Schema验证中Key的使用范围----------急,在线等待! (http://bbs.xml.org.cn/dispbbs.asp?boardid=23&rootid=&id=11116) |
-- 作者:moon1128 -- 发布时间:10/19/2004 8:33:00 AM -- 请教大家关于Schema验证中Key的使用范围----------急,在线等待! 小弟,需要做一个组织机构的验证,但是遇到key的问题。 详细如下: <Staff Id="1" /> <Role> <Staff>1</Staff> </Role> 需要设定Id为Key。关键是Role中的Staff元素要引用Id的Key值。也就是说上例中的1(first)必须等于1(next)。 |
-- 作者:moon1128 -- 发布时间:10/19/2004 9:54:00 AM -- 刚才自己解决了问题。Happy!!! 看来是Xpath掌握的不好。看了w3c的文档,才明白。 问题虽小,但是我认为还是文档研究的不够。 |
-- 作者:doubleG -- 发布时间:10/19/2004 10:35:00 AM -- 按照上面的XML写了个简单例子,不知合意不,写的不太好,呵呵 <?xml version="1.0" encoding="UTF-8"?> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified"> <xs:element name="staffs"> <xs:complexType> <xs:sequence> <xs:element name="Staff"> <xs:complexType> <xs:attribute name="Id" type="xs:string"/> </xs:complexType> </xs:element> <xs:element name="Role" type="staffType"> <xs:keyref name="staffkey2" refer="staffKey"> <xs:selector xpath="."/> <xs:field xpath="Staff"/> </xs:keyref> </xs:element> </xs:sequence> </xs:complexType> <xs:key name="staffKey"> <xs:selector xpath="Staff"/> <xs:field xpath="@Id"/> </xs:key> </xs:element> <xs:complexType name="staffType"> <xs:sequence> <xs:element name="Staff"> </xs:element> </xs:sequence> </xs:complexType> </xs:schema> |
-- 作者:doubleG -- 发布时间:10/19/2004 10:35:00 AM -- 呵呵 恭喜!! |
-- 作者:moon1128 -- 发布时间:10/20/2004 8:20:00 AM -- 谢谢doubleG!!! 我实现的和你做的有一点不一样。就是我的keyref,是在Role元素外面。 不知道是不是作用域有区别。上面的staffkey2应该不能在Role元素外部使用吧。 还有一个问题,全局的和内部的key性能上面的影响大么? |
-- 作者:doubleG -- 发布时间:10/20/2004 9:08:00 AM -- 对,keyref的要根据XPath来定位,所以我上面写的那个staffkey2的XPath是以Role为当前节点定位的,放在外面的话,就要看是在哪个<xs:element...之下,改动对应的XPath就可以了。因为是以XPath定位,所以效率上应该没有很大的差别。 |
-- 作者:moon1128 -- 发布时间:10/21/2004 4:01:00 PM -- 谢谢doubleG!!! |
W 3 C h i n a ( since 2003 ) 旗 下 站 点 苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》 |
46.875ms |