首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >simpleType定义xml模式

simpleType定义xml模式
EN

Stack Overflow用户
提问于 2020-05-20 12:02:03
回答 1查看 311关注 0票数 0

对于我看到的关于如何声明/定义simpleTypes的不同示例,我有点不确定。从我在这两个站点上看到的情况来看,语法描述是相同的,但示例不同。

simpletype.asp中我看到:

代码语言:javascript
复制
<xs:element name="age">
  <xs:simpleType>
    <xs:restriction base="xs:integer">
      <xs:minInclusive value="0"/>
      <xs:maxInclusive value="100"/>
    </xs:restriction>
  </xs:simpleType>
</xs:element>

但是在https://learn.microsoft.com/en-us/previous-versions/dotnet/netframework-4.0/ms256050(v%3Dvs.100)中,他们使用:

代码语言:javascript
复制
<xs:simpleType name="freezeboilrangeInteger">
  <xs:restriction base="xs:integer">
    <xs:minInclusive value="0"/>
    <xs:maxInclusive value="100"/>
  </xs:restriction>
</xs:simpleType>

这两种方式不同吗?如果是的话,有甚麽分别呢?如果它们是相同的,哪一个应该使用/is最佳实践?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-05-20 12:08:54

第一个例子是xsd-元素,它以嵌入式方式包含其类型定义。

第二个示例只包含一个类型定义(xs:simpleType),没有引用它的元素。但是没有元素或属性引用的类型定义是没有意义的。

因此,要使这两个示例具有可比性(具有相同的结果),需要在第二个示例中添加引用类型定义的元素:

代码语言:javascript
复制
<xs:element name="age" type="tns:freezeboilrangeInteger"/>

<xs:simpleType name="freezeboilrangeInteger">
  <xs:restriction base="xs:integer">
    <xs:minInclusive value="0"/>
    <xs:maxInclusive value="100"/>
  </xs:restriction>
</xs:simpleType>

从这两个选项(嵌入式或外部类型定义)来看,后者更可取,因为它是可重用的。

//更新(由于注释)

我已经设置了一个XSD 这里,它包含了这三种方法(嵌入式类型定义、引用类型定义和引用元素),因为我认为在线使用这样的xsd2xml生成器是了解XSD的最好方法。起点是我的顺序:

代码语言:javascript
复制
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="mytns" xmlns:tns="mytns">

    <xs:element name="agetest">
        <xs:simpleType>
            <xs:restriction base="xs:integer">
                <xs:minInclusive value="0" />
                <xs:maxInclusive value="100" />
            </xs:restriction>
        </xs:simpleType>
    </xs:element>

    <xs:simpleType name="freezeboilrangeInteger">
        <xs:restriction base="xs:integer">
            <xs:minInclusive value="0" />
            <xs:maxInclusive value="100" />
        </xs:restriction>
    </xs:simpleType>

    <xs:element name="mysequence">
        <xs:complexType>
            <xs:sequence>
                <xs:element name="age">
                    <xs:simpleType>
                        <xs:restriction base="xs:integer">
                            <xs:minInclusive value="0" />
                            <xs:maxInclusive value="100" />
                        </xs:restriction>
                    </xs:simpleType>
                </xs:element>
                <xs:element name="age2" type="tns:freezeboilrangeInteger" />
                <xs:element name="age3" ref="tns:agetest" />
            </xs:sequence>
        </xs:complexType>
    </xs:element>
</xs:schema>

它生成以下示例XML结果:

代码语言:javascript
复制
<?xml version="1.0" encoding="utf-8"?>
<mysequence xmlns="mytns">
  <age>83</age>
  <age2>86</age2>
  <nsA:agetest xmlns:nsA="mytns">18</nsA:agetest>
</mysequence>
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61912616

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档