gpt4 book ai didi

具有元素和属性的 XSD 扩展

转载 作者:行者123 更新时间:2023-12-04 17:00:02 27 4
gpt4 key购买 nike

我需要创建一个 XSD 来验证以下类型的 XML:

<dbengine stylesheet="file:transformation.xslt">
<queries>
<query name="update" inputtype="file">file:/src/test.sql</query>
<query name="update" inputtype="sql">select * from test</query>
</queries>
</dbengine>

这可以通过制定以下架构来完成:

<xsd:element name="dbengine">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="queries" type="queries" minOccurs="1"/>
</xsd:sequence>
<xsd:attribute name="stylesheet" type="xsd:string" use="optional"/>
</xsd:complexType>
</xsd:element>

此外,我需要此标签能够通过从 http://www.springframework.org/schema/integration/spring-integration-1.0.xsd 扩展 inputOutputEndpointType 从/向 channel 接收和发送消息.所以理想情况下我应该有这样的东西:

<xsd:element name="dbengine">
<xsd:complexType>
<xsd:complexContent>
<xsd:extension base="int:inputOutputEndpointType" >
<xsd:sequence>
<xsd:element name="queries" type="queries" minOccurs="1"/>
</xsd:sequence>
<xsd:attribute name="stylesheet" type="xsd:string" use="optional"/>
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>
</xsd:element>

但是这会导致错误(在 eclipse 编辑器中):

cos-ct-extends.1.4.3.2.2.1.a: The content type of a derived type and that of its base must both be mixed or both be element-only. Type '#AnonType_dbengine3' is element only, but its base type is not.

添加 mixed="true"属性没有帮助,到目前为止,所有其他解决此问题的尝试都失败了。

最佳答案

我在我的 XML 架构编辑器中尝试了您的架构,但您的代码段没有出现任何错误(我必须将它放在 xsd:schema 中,并为查询复杂类型添加一个虚拟定义)。

我认为您只是遇到了 Eclipse 编辑器的问题。活生生的证明在同一个文件中,请看一下“innerEndpointDefinitionAware”复杂类型。

您应该尝试使用 Eclipse 的一件事是在同一文件夹中实际下载 spring-integration-1.0.xsd、spring-beans-2.0.xsd 和 sprint-tool-2.0.xsd。编辑集成文件以确保您为 xsd:imports 手动将 schemaLocation 添加到已下载的文件中。再试一次,看看会发生什么。如果有效,则问题与几乎所有 Spring 模式使用的“悬挂”方法有关(使用没有 schemaLocation 的 xsd:import)。对于悬空定义,由架构处理器(在您的情况下由 Eclipse 提供)来解析这些 namespace 。

使用我的编辑器,即使不下载它也能工作,在我配置它以将悬空定义解析为适当版本的 bean 和工具之后——也许 Eclipse 支持相同的版本?

关于具有元素和属性的 XSD 扩展,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7429496/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com