我正在尝试重新定义external xsd中包含的元素定义(我无法修改),如下所示:
<xsd:element name="view-controller">
<xsd:complexType>
<xsd:attribute name="path" type="xsd:string" use="required" />
<xsd:attribute name="view-name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
这定义了以下元素:
<mvc:view-controller path="/path" view-name="server/view/etc" />
如何扩展它以便我可以创建具有2个附加属性(foo和bar)的元素?
请参阅下面的示例,了解我需要的最终结果:
<mvc:view-controller path="/path" view-name="server/view/etc" foo="stuff" bar="more stuff" />
我尝试了什么:
<xsd:redefine schemaLocation="http://www.domain.org/schema/correct-path.xsd">
<xsd:simpleType name="view-controller">
<xsd:complexContent>
<xsd:extension base="view-controller">
<xsd:attribute name="foo" type="xsd:string" />
<xsd:attribute name="bar" type="xsd:string" />
</xsd:extension>
</xsd:complexContent>
</xsd:simpleType>
</xsd:redefine>
然而这不起作用。
我似乎无法找到任何详细说明如何重新定义包含xsd:element
属性的资源,我认为这是问题所在。
如果需要更多信息,请发表评论。
答案 0 :(得分:2)
你不能在simpleType中有一个complexContent,它没有意义。
此外,您可以重新定义的唯一内容是:simpleType,complexType,group,attributeGroup。所以你不能重新定义一个元素。只有在具有命名类型时才能更改其类型,在您的示例中似乎不是这种情况。
有关详细信息,请参阅http://www.w3.org/TR/xmlschema-0/#Redefine。
答案 1 :(得分:0)
@Razor,你的意思是你不想修改现有的xsd,但想再创建一个改变元素属性的xsd?
如果是这种情况那么我认为它几乎是不可能的!错误如definition already exists
麻烦..