我在这里遇到了一个问题,不知道从哪里开始。我迫切需要帮助。这就是我想要的。
我需要编写一个XSD Schema来表示ODL语言。
我们知道ODL的结构,有接口/类,可以扩展其他,它们可能有属性,关系,操作。他们每个人都有自己的选择和偏好。 XSD应该代表ODL的结构及其所有可能的属性。
任何人都可以给我一些帮助吗?我该怎么办?会欣赏任何东西......
EDIT1: 好的,做了我自己的研究,并从哪里开始。这是我的起点。我已经定义了在ODL中声明类/接口的部分。
现在,需要找出在“odlType”complexType
内写什么以及怎么写。这应该包括所有可能的属性(属性,关系)。我是对的吗?
EDIT2 好的,现在我添加了类的属性,但是如果属性类型是Set或List,我不知道是否需要做某事...... 这是我最后的成就......现在,我的问题是,如何处理属性?这是否足够,或者我必须更改“attrType”?
EDIT3 好的。改变了“attrType”一点。现在我觉得它适用于更复杂的类型。但是,如果属性是类类型怎么办?而且我仍然不知道如何处理关系...请帮我一把......
EDIT4 改变了一点,包括扩展课程。不确定这种方法是否正确。但无论如何。
<?xml version="1.0" encoding="utf-8"?>
<xs:schema id="ODL"
xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:complexType name="odlType" abstract="true">
<xs:sequence>
<xs:element name="attribute" type="attrType" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
<xs:sequence>
<xs:element name="reference" type="refType" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute name="type" type="objType"/>
<xs:attribute name="name" type="xs:string"/>
</xs:complexType>
<xs:complexType name="odlSubType">
<xs:complexContent>
<xs:extension base="odlType">
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:simpleType name="objType">
<xs:restriction base="xs:string">
<xs:enumeration value="class"/>
<xs:enumeration value="interface"/>
</xs:restriction>
</xs:simpleType>
<xs:complexType name="attrType">
<xs:sequence>
<xs:element name="attr" type="attrType" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute name="preType" type="preType"/>
<xs:attribute name="type" type="xs:string"/>
<xs:attribute name="name" type="xs:string"/>
</xs:complexType>
<xs:simpleType name="preType">
<xs:restriction base="xs:string">
<xs:enumeration value="Struct"/>
<xs:enumeration value="Enum"/>
</xs:restriction>
</xs:simpleType>
</xs:schema>
现在考虑ODL的关系。我想我最好将它们添加为“odlType”的属性序列。但只是不知道给他们什么类型......哦,请帮我一把......我迫切需要这方面的建议......
答案 0 :(得分:0)
您需要先了解XSD是什么以及如何创作XSD文档。我建议你按照给定的顺序阅读以下两个教程