gpt4 book ai didi

xml - 在哪里声明一个 simpleType 以便它可以在同一个 XSD 中的多个元素中使用?

转载 作者:数据小太阳 更新时间:2023-10-29 02:22:20 26 4
gpt4 key购买 nike

现在我有一个看起来像这样的 XSD 文件(例如 FOO_SCHEMA.xsd):

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" 
elementFormDefault="qualified" attributeFormDefault="unqualified">
<xs:element name="FOO">
<xs:annotation>
<xs:documentation>Comment</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element name="BAR1" type="xs:string" />
<xs:element name="BAR2" type="xs:string" />
<xs:element name="BAR3" type="xs:string" />
<xs:element name="BAR4" type="xs:string" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>

我想修改两个元素(比如 BAR1 和 BAR2)以使用一次。我知道如何将它用于其中一个,

<xs:element name="BAR1">
<xs:simpleType>
<!-- my type definition here -->
</xs:simpleType>
</xs:element>

但我想在两个(也许更多)元素中使用它,而且我不确定如何在不复制相同的简单类型定义的情况下做到这一点。从谷歌搜索看来,我需要用名称声明类型

但是我不知道把这个声明放在哪里。我尝试将它放在与 xs:complexType 和其他几个级别相同的级别,但它被模式验证器拒绝了。知道把这个声明放在哪里吗? 有什么想法吗?

最佳答案

XSD 文件中的所有可引用组件必须直接放在 xs:schema 元素下。换句话说,您的全局简单类型声明必须是 FOO 元素的兄弟。

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" 
elementFormDefault="qualified" attributeFormDefault="unqualified">
<xs:element name="FOO">
<xs:annotation>
<xs:documentation>Comment</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element name="BAR1" type="BAR" />
<xs:element name="BAR2" type="BAR" />
<xs:element name="BAR3" type="xs:string" />
<xs:element name="BAR4" type="xs:string" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:simpleType name="BAR">
<xs:restriction base="xs:string">
<xs:pattern value="BAR"/>
</xs:restriction>
</xs:simpleType>
</xs:schema>

关于xml - 在哪里声明一个 simpleType 以便它可以在同一个 XSD 中的多个元素中使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13150465/

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