代码之家  ›  专栏  ›  技术社区  ›  Razor

重新定义xsd元素

  •  3
  • Razor  · 技术社区  · 15 年前

    我试图重新定义包含在 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" />
    

    如何扩展它以便创建具有两个附加属性(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 包含属性,我认为这是这里的问题。

    如果需要更多信息,请评论。

    2 回复  |  直到 15 年前
        1
  •  2
  •   Damien    15 年前

    在simpleType中不能有complexContent,这是没有意义的。

    此外,您唯一可以重新定义的是:simpleType、complexType、group、attributeGroup。所以你不能重新定义一个元素。只有当它有一个命名类型时,才可以更改它的类型,在您的示例中似乎不是这样。

    见 http://www.w3.org/TR/xmlschema-0/#Redefine 更多信息。

        2
  •  0
  •   Rookie Programmer Aravind    15 年前

    @剃须刀,你的意思是你不想修改现有的XSD,但是想要创建一个改变元素属性的XSD??

    如果真是这样的话,我想这几乎是不可能的!错误,如 definition already exists 麻烦。。