gpt4 book ai didi

xml - 与将 从一个 XSD 扩展到另一个 XSD 相关的查询

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

假设我在 standard.xsd 文件中有一段代码,

<xs:complexType name="StdBasicTags">
<xs:sequence>
<xs:element name="Name" type="xs:string" nillable="true">
<xs:annotation>
<xs:documentation>Name</xs:documentation>
</xs:annotation>
</xs:element>
</xs:sequence>
</xs:complexType>

现在我有另一个 XSD 文件,它包含上面的文件并向上面的 complexType StdBasicTags 添加了一些额外的元素

文件名为fullStandard.xsd,我扩展StdBasicTags的方式如下:

<xs:include schemaLocation="standard.xsd"/>
........
........
<xs:complexType name="FullStdBasicTags">
<xs:complexContent>
<xs:extension base="StdBasicTags">
<xs:sequence>
<xs:element name="Surname" type="xs:string">
<xs:annotation>
<xs:documentation>Last name</xs:documentation>
</xs:annotation>
</xs:element>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>

我有以下疑问,

  1. 我正在使用获得许可的 Altova XmlSpy 工具为 fullStandard.xsd 文件生成示例 xml,但我只能看到 Name 元素,而看不到 Surname 元素预期的。谁能告诉我可能的原因是什么,我错过了什么?

  2. 我必须提供另一个名称,即 FullStdBasicTags,用于扩展 StdBasicTags 并添加新元素。在这种情况下,完整的最终 XML 文件的输出是什么?这个想法是让 NameSurname 在相同的父 complexType StdBasicTags 下。

  3. 最后,我期望的架构/输出有什么问题吗?

Note** both the files are getting validated correctly. Also the idea is to achieve what I have just mentioned without making any changes to the standard.xsd file.

**更新令我惊讶的是,到目前为止还没有人向我提出任何建议。与此同时,我尝试了这个,

   <xs:element name="FullNewRoot">
<xs:complexType>
<xs:sequence>
<xs:element ref="rootElementName"/>
</xs:sequence>
</xs:complexType>
</xs:element>

其中 rootElementName 是 standard.xsd 的根元素。现在添加这个之后,我可以看到其他元素。但现在的问题是,首先出现整个 standard.xsd 结构,然后出现我在 fullStandard.xsd 中重新定义的任何内容,而我只想要一次。

请提出一些建议。

最佳答案

请在下面找到您的问题的答案。

  1. 可能的原因是元素的类型。如果您使用的是 StdBasicTags,则类型应为 FullStdBasicTags。

  2. 父类型不能引用子类型中添加的新属性。同样的继承原则也适用于此。

请在下面找到示例。

标准架构.xsd

<?xml version="1.0" encoding="UTF-8"?>
<schema xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.example.org/StdSchema"
xmlns:tns="http://www.example.org/StdSchema" elementFormDefault="qualified">
<complexType name="StdBasicTags">
<sequence>
<element name="Name" type="string" nillable="true">
<annotation>
<documentation>Name</documentation>
</annotation>
</element>
</sequence>
</complexType>
</schema>

完整架构.xsd

<?xml version="1.0" encoding="UTF-8"?>
<schema xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.example.org/FullSchema"
xmlns:tns="http://www.example.org/FullSchema" elementFormDefault="qualified"
xmlns:tst="http://www.example.org/StdSchema">
<include schemaLocation="StdSchema.xsd" />
<import schemaLocation="StdSchema.xsd" namespace="http://www.example.org/StdSchema"></import>
<complexType name="FullStdBasicTags">
<complexContent>
<extension base="tst:StdBasicTags">
<sequence>
<element name="Surname" type="string">
<annotation>
<documentation>Last name</documentation>
</annotation>
</element>
</sequence>
</extension>
</complexContent>
</complexType>

<element name="TestTag" type="tns:FullStdBasicTags"/>
</schema>

示例 XML:

<?xml version="1.0" encoding="UTF-8"?>
<tns:TestTag xmlns:tns="http://www.example.org/FullSchema" xmlns:tns1="http://www.example.org/StdSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.example.org/FullSchema FullSchema.xsd ">
<tns1:Name>tns1:Name</tns1:Name>
<tns:Surname>tns:Surname</tns:Surname>
</tns:TestTag>

关于xml - 与将 <complexType> 从一个 XSD 扩展到另一个 XSD 相关的查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34448541/

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