我给了
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema
targetNamespace="AdditionalAttribute.OtherXSD"
xmlns:o="AdditionalAttribute.OtherXSD"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
>
<xs:element name="Tag" type="o:TagType" />
<xs:complexType name="TagType" />
</xs:schema>
我想写
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema
targetNamespace="AdditionalAttribute.MyXSD"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
>
<!-- ? -->
</xs:schema>
所以这成为有效的 XML:
<?xml version="1.0" encoding="UTF-8"?>
<o:Tag
xmlns:o="AdditionalAttribute.OtherXSD"
xmlns:m="AdditionalAttribute.MyXSD"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="
AdditionalAttribute.OtherXSD AdditionalAttribute.OtherXSD.xsd
AdditionalAttribute.MyXSD AdditionalAttribute.MyXSD.xsd
"
m:AdditionalAttribute="Value"
/>
我知道一个类似的问题,询问如何在另一个 XSD 中为所有复杂类型放置一个附加属性。答案是否定的。但是,我不是这方面的专家,从那里的答案中我无法推断出特定复杂类型是否可能。我尝试了几件事但没有成功,似乎这只能通过 xsd:extension'ing 或 xsd:restriction'ing 复杂类型来实现,从而派生出一个新类型,这不是我想要的。我想在同一个标签上“合并”属性:
<o:Tag o:...=... />
+ <o:Tag m:...=... />
= <o:Tag o:...=... m:...=... />
这可能吗?如何?