Xml 如何在xsd上为属性定义不同的作用域?
元素上有name属性。此name属性在Package元素中必须是唯一的 但类内元素名称属性可能会在另一个类元素上重复,如Xml 如何在xsd上为属性定义不同的作用域?,xml,xsd,schema,Xml,Xsd,Schema,元素上有name属性。此name属性在Package元素中必须是唯一的 但类内元素名称属性可能会在另一个类元素上重复,如 <Metamodel> <Package Name="serhat"> <OwnedType> <Class Name="serhat"></Class> </OwnedType> </Package> <Package Name="serhat2
<Metamodel>
<Package Name="serhat">
<OwnedType>
<Class Name="serhat"></Class>
</OwnedType>
</Package>
<Package Name="serhat2">
<OwnedType>
<Class Name="serhat"></Class>
</OwnedType>
</Package>
<Class Name="serhat"></Class>
</Metamodel>
如何定义此属性?我相信您想要的不是属性,而是身份约束。因此,生成的XSD如下所示(我假设包下的类必须以某种方式重复):
<Package Name="serhat">
<OwnedType>
<Class Name="serhat"></Class>
</OwnedType>
</Package>
<Package Name="serhat2">
<OwnedType>
<Class Name="serhat"></Class>
</OwnedType>
</Package>
<?xml version="1.0" encoding="utf-8"?>
<!--W3C Schema generated by QTAssistant/W3C Schema Refactoring Module (http://www.paschidev.com)-->
<xsd:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<xsd:element name="Metamodel">
<xsd:complexType>
<xsd:sequence>
<xsd:element maxOccurs="unbounded" name="Package">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="OwnedType">
<xsd:complexType>
<xsd:sequence>
<xsd:element ref="Class" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
<xsd:attribute name="Name" type="xsd:string" use="required"/>
</xsd:complexType>
<xsd:unique name="ClassNameUniqueInPackage">
<xsd:selector xpath="OwnedType/Class"/>
<xsd:field xpath="@Name"/>
</xsd:unique>
</xsd:element>
<xsd:element ref="Class"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="Class">
<xsd:complexType>
<xsd:attribute name="Name" type="xsd:string" use="required"/>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<Metamodel>
<Package Name="serhat">
<OwnedType>
<Class Name="serhat"></Class>
<Class Name="serhat2"></Class>
</OwnedType>
</Package>
<Package Name="serhat2">
<OwnedType>
<Class Name="serhat"></Class>
</OwnedType>
</Package>
<Class Name="serhat"></Class>
</Metamodel>
<Metamodel>
<Package Name="serhat">
<OwnedType>
<Class Name="serhat"></Class>
<Class Name="serhat"></Class>
</OwnedType>
</Package>
<Package Name="serhat2">
<OwnedType>
<Class Name="serhat"></Class>
</OwnedType>
</Package>
<Class Name="serhat"></Class>
</Metamodel>
Error occurred while loading [], line 5 position 5
There is a duplicate key sequence 'serhat' for the 'ClassNameUniqueInPackage' key or unique identity constraint.