以文本方式查看主题 - 计算机科学论坛 (http://bbs.xml.org.cn/index.asp) -- 『 DTD/XML Schema 』 (http://bbs.xml.org.cn/list.asp?boardid=23) ---- simpleContent的问题,有请高手们回答 (http://bbs.xml.org.cn/dispbbs.asp?boardid=23&rootid=&id=45296) |
-- 作者:lao_cai -- 发布时间:4/12/2007 9:51:00 AM -- simpleContent的问题,有请高手们回答 <?xml version="1.0"?> <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://your_namespace" targetNamespace="http://your_namespace" elementFormDefault="qualified"> <xsd:element name="personinfo" type="weightlessPerson"/> <xsd:complexType name="malefemalePerson"> <xsd:simpleContent> <xsd:extension base="xsd:string"> <xsd:attribute name="sex"/> </xsd:extension> </xsd:simpleContent> </xsd:complexType> <xsd:complexType name="weightlessPerson"> <xsd:simpleContent > <xsd:restriction base="malefemalePerson"> <xsd:minLength value="5"/> <xsd:attribute name="sex" use="prohibited"/> </xsd:restriction> </xsd:simpleContent> </xsd:complexType> </xsd:schema> simpleContent是由简单类型派生复杂类型,按理malefemalePerson是复杂类型,它不能使用simpleContent来派生weightlessPerson,但事实是可以,如果把simpleContent改成complexContent反而错了,为什么? |
-- 作者:gemingke -- 发布时间:4/12/2007 12:35:00 PM -- 可能要 具体看看XML Schema Part 1 Structures 才能清楚。不过是全英文的,我得阅读速度会变很慢。。。 |
-- 作者:tianlijian -- 发布时间:4/29/2007 7:56:00 AM -- 我也刚开始学,不太清楚啊 |
-- 作者:gogy -- 发布时间:4/29/2007 12:10:00 PM -- 呵呵,概念理解上有错误啊。 一个复杂元素类型的定义使用<xs:simpleContent>,还是使用<xs:complexContent>来定义,不是看它由什么派生出来。那就是本末倒置了啊。 得看原XML实例文档中的元素是简单内容(simpleCont)还是复杂内容(complexContent)的。然后决定使用<xs:simpleContent>还是使用<xs:complexContent>。 然后才看如何定义这个内容模型,是约束派生,还是扩展派生,用哪个基类型。 扩展派生<xs:extension>,主要通过添加子元素或属性实现。你上面那个实际是由simpleContent扩展一个属性,得到的仍然是一个simpleContent。因为你没有扩展子元素。 而这仍然符合原来的XML文档。 “simpleContent是由简单类型派生复杂类型”,实际上是不对的。 |
-- 作者:lao_cai -- 发布时间:5/11/2007 11:41:00 AM -- 关键是没有子元素,而带有属性的元素是否属于简单内容?这里的简单类型与简单数据类型可能不是一回事,谢谢你的回复 |
-- 作者:gogy -- 发布时间:5/12/2007 10:30:00 PM -- 关键是没有子元素,而带有属性的元素是否属于简单内容? 是的。simpleContent正是这样的。
|
W 3 C h i n a ( since 2003 ) 旗 下 站 点 苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》 |
171.875ms |