- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我遇到了这个列表 W3C XML Schema: DOs and DON'Ts和说 DO NOT use complex types 的部分有点让我吃惊。
我在使用 <xs:complexType name="SomeNewType">
时没有发现任何问题我不明白为什么使用 <xs:group name="someNewElement">
比使用 complexType 更好。
真的需要避免 complexType 吗?
如果是这样,为什么?它有什么问题?
应该用什么代替?
最佳答案
对于几乎任何足够复杂和强大而有趣的语言,不同的人都会对使用该语言的最佳方式有不同的看法。
你问“真的应该避免 complexType 吗?”正如您所看到的,在文档中,您指出 Kohsuke Kawaguchi(他是设计 XSD 的工作组的成员并编写了几个重要的 XSD 工具,包括第一个 XSD 验证器之一)建议用户避免在 XSD 中使用某些构造,包括 complexType ,通常是因为它们的优势与劣势的比率(特别是:它们的复杂性)很差。您可以(而且确实必须)对 KK 论点的说服力做出自己的决定。
由于(据我所知)您的问题相当于问“KK 是对的吗?”,我认为您不太愿意做出自己的决定,或者至少您很好奇并想知道其他人的想法思考。
总的来说,可以肯定地说,许多 XSD 用户和许多 XSD 工具的创建者不同意 KK。他们发现从其他复杂类型派生复杂类型的能力很有帮助,并且他们使用了它。
同样可以肯定的是,许多其他人都同意 KK 的这种或那种 XSD 构造过于复杂,最好避免。一些有这种感觉的人编写了描述“最佳实践”的文档,其中列出了要使用的结构和要避免的结构;有时此类文件的内容有用,有时则无用。许多非常同意 KK 关于 XSD 复杂类型的人根本不使用 XSD,当他们可以避免这样做时:他们更喜欢 Relax NG(或在某些情况下,DTD 或 Schematron)。
换句话说:合格观察员的意见各不相同,不合格观察员的意见也各不相同。我知道一些非常聪明的人在这个问题上不同意 KK。我也知道 KK 本人,以及一些同意他的人,也非常聪明。我无意在这里选边站。
最后,你问如果它有问题,为什么它首先存在于语言结构中?任何语言中的任何构造都存在,因为设计该语言的人认为值得包含。在 XSD 和复杂类型的情况下,这意味着:复杂类型在 XSD 中作为可命名对象,因为基本上负责工作组中的每个人都希望在语言中使用它们。这并不能阻止他们出现问题:像其他人一样,技术娴熟的人可能会犯错误,而必须寻求共识的团队可以在适当的情况下产生没有人真正喜欢的设计(但每个人都更喜欢另一种选择)根本没有问题的结构;有时妥协是完成某事的唯一方法)。
我希望这有帮助。
关于xsd - 为什么需要避免 complexType ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17883233/
该XSD部分是从http://www.iana.org/assignments/xml-registry/schema/netconf.xsd获得的
我遇到了这个列表 W3C XML Schema: DOs and DON'Ts和说 DO NOT use complex types 的部分有点让我吃惊。 我在使用 时没有发现任何问题我不明白为什么
到一个简单的元素 type="xs:int"我想添加一个限制和一些属性。但是,我看到的唯一方法是分两步: 声明一个命名(全局)类型并将所有限制放在命名类型中 引用base中的命名类型的 并将属性添加到
我在架构中有以下内容: 一些解析器允许直接在元素中使用 PCDATA,而另一些则不允许。 XSD 推荐 (3.4.2)
我在以下类(class)中收到以下错误: 无法序列化 DataObjects.Ingredient 类型的成员“成分”。 XmlAttribute/XmlText 不能用于编码复杂类型。 关于为什么的
我想知道为什么不用写 我不能指定它是 xs:complexType 的元素属性吗?或者是否有 xs:superSecretThingIdontKnow
我最近更新到 Breezejs 1.4.2,运行自定义初始值设定项似乎存在问题。我的应用程序使用 Breeze 正确注册了 ctor 和初始化程序(我相信),但是当我从 Entity Framewor
当使用XML Schema声明一个complexType只有一个子元素时,以下三种方式都可以达到目的: 显然,sequence、choice
我有一个类似于此示例的 xml 文档(和复杂元素): 但是在我的 xml 中,我是先添加名字还是姓氏并不重要。所以我想删除“xs:sequence”部分,但我不
目前我使用的是 PHP 版本 5.4.16 和 NuSoap 0.95,我试过这个例子: here 它显示了这样的服务器代码; $server->wsdl->addComplexType( '
我刚刚读了一本关于网络服务的书,上面说有“RPC 风格的网络服务”和“文档风格的网络服务”。第二个是在 WSDL 序列和复杂类型中使用。我什么时候应该使用这种风格? 最佳答案 当您想要将联系人、消息或
我自动生成 XML 架构,生成的 xsd 文件是根据百叶窗设计模式创建的。现在我有很多复杂的类型,并且想减少它们的数量。有没有一种简单的方法可以确定两个复杂类型是否描述相同的限制? 这是一个向您展示我
我正在尝试使用包含以下 XSD 的 WCF 使用服务(用 Java 构建和托管) 当我从该服务请求数据时,出现以下错误: "Base64 sequence length (1) no
我对 EntityFramework 的 Code First 方法相当陌生,当我尝试创建引用实体类型的可重用复杂类型时遇到以下错误。 模型: class Bank { public int
我正在使用 Jdeveloper 12c。我正在尝试使用 complexType 作为在另一个 complexType 中键入另一个元素的引用。 Jdev 告诉我它找不到 AddressInfo 引用
我有这个 xsd,它有点糟糕,但我必须使用它来避免更改我正在编写的 servlet 的接口(interface)。请求-响应接口(interface)的 xsd 包含以下几行:
这
我有一个服务器 (SoapUI) 响应 WSDL 请求。 当发送测试请求时,我的服务器代码正在接收参数的列表,但我试图实现的是单个参数,复杂类型,例如: { ingredient_id => I
例子如下。请让我知道同名的副作用。我正在尝试从此 XSD 创建 Java 对象模型。
如何及时插入具有复杂类型的多个实体? 考虑以下几点: public class Entity { public Address Address { get; set; } } [ComplexTy
我是一名优秀的程序员,十分优秀!