定义 XML 架构 (XSD) 时“选择”“组”元素是否有效
即以下是否有效
<xs:complexType name="HeaderType">
<xs:sequence>
<xs:element name="reservation-number" type="ReservationNumberType" minOccurs="1" maxOccurs="1" nillable="false" />
<xs:choice minOccurs="1" maxOccurs="1">
<xs:group ref="ReservationGroup" />
<xs:group ref="CancellationGroup"/>
</xs:choice>
</xs:sequence>
</xs:complexType>
例如,XML 消息可以表示新预订或现有预订的取消。
如果消息用于预订,则它必须包含 ReservationGroup 组中定义的所有元素。
如果是取消,则它必须包含 CancellationGroup 组中定义的所有元素。
出于某种原因,我的 XML 编辑器 (Eclipse) 不喜欢这样,但没有说明原因。它显示
最佳答案
我不是 XML 专家,尽管我经常使用它。这不是我通常做这种结构的方式。我更喜欢单独的复杂类型,而不是选择两组(请参阅此答案的最后)。
我怀疑问题在于 ReservationGroup 和 CancellationGroup 以相同的元素开头,在这种情况下,您将违反架构组件约束:唯一粒子属性(如下)。
http://www.w3.org/TR/2004/REC-xmlschema-1-20041028/#cos-nonambig
Schema Component Constraint: Unique Particle Attribution
A content model must be formed such that during ·validation· of an element information item sequence, the particle component contained directly, indirectly or ·implicitly· therein with which to attempt to ·validate· each item in the sequence in turn can be uniquely determined without examining the content or attributes of that item, and without any information about the items in the remainder of the sequence.
Note: This constraint reconstructs for XML Schema the equivalent constraints of [XML 1.0 (Second Edition)] and SGML. Given the presence of element substitution groups and wildcards, the concise expression of this constraint is difficult, see Analysis of the Unique Particle Attribution Constraint (non-normative) (§H) for further discussion.
比如下面这两个组在同一个选择中是非法的,因为它们的第一个元素都是“name”,这意味着你无法识别你在看哪个组。但是 ReservationGroup 的第一个元素是否不同于 Cancellation 组 (可能是 resDate 和 cancDate),那么那是有效的。
编辑:我以前从未遇到过这种问题,我认为组的定义是完全合法的,这很有趣,但是如果你把它们放在一起进行选择,那由于每个组的定义,选择变得非法。
无法形成合法选择的群体
<xs:group name="ReservationGroup">
<xs:sequence>
<xs:element name="date"/>
<xs:element name="name"/>
<xs:element name="address"/>
</xs:sequence>
</xs:group>
<xs:group name="CancellationGroup">
<xs:sequence>
<xs:element name="date"/>
<xs:element name="name"/>
<xs:element name="address"/>
</xs:sequence>
</xs:group>
可以形成合法选择的群体
<xs:group name="ReservationGroup">
<xs:sequence>
<xs:element name="resDate"/>
<xs:element name="name"/>
<xs:element name="address"/>
</xs:sequence>
</xs:group>
<xs:group name="CancellationGroup">
<xs:sequence>
<xs:element name="cancDate"/>
<xs:element name="name"/>
<xs:element name="address"/>
</xs:sequence>
</xs:group>
正如我上面提到的,我会用复杂类型做这种事情。是的,它增加了另一个元素,但这似乎是显而易见的方式,我喜欢显而易见。
<xs:complexType name="HeaderType">
<xs:sequence>
<xs:element name="reservation-number" type="ReservationNumberType" minOccurs="1" maxOccurs="1" nillable="false" />
<xs:choice minOccurs="1" maxOccurs="1">
<xs:element name="reservation" type="ReservationType" />
<xs:element name="cancellation" type="CancellationType" />
</xs:choice>
</xs:sequence>
</xs:complexType>
关于xml - 定义 XML 架构 (XSD) 时,具有 'choice' 元素的 'group' 是否有效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/101338/
我正在尝试设置一个puppet节点,但rubygems似乎不正常。如果我通过它自己的二进制文件(/usr/lib/ruby/gems/1.8/gems/facter-1.5.8/bin/facter)在cli上运行facter,它工作正常,但如果我通过由rubygems(/usr/bin/facter)安装的二进制文件,它抛出:/usr/lib/ruby/1.8/facter/uptime.rb:11:undefinedmethod`get_uptime'forFacter::Util::Uptime:Module(NoMethodError)from/usr/lib/ruby
我正在尝试测试是否存在表单。我是Rails新手。我的new.html.erb_spec.rb文件的内容是:require'spec_helper'describe"messages/new.html.erb"doit"shouldrendertheform"dorender'/messages/new.html.erb'reponse.shouldhave_form_putting_to(@message)with_submit_buttonendendView本身,new.html.erb,有代码:当我运行rspec时,它失败了:1)messages/new.html.erbshou
我在我的项目目录中完成了compasscreate.和compassinitrails。几个问题:我已将我的.sass文件放在public/stylesheets中。这是放置它们的正确位置吗?当我运行compasswatch时,它不会自动编译这些.sass文件。我必须手动指定文件:compasswatchpublic/stylesheets/myfile.sass等。如何让它自动运行?文件ie.css、print.css和screen.css已放在stylesheets/compiled。如何在编译后不让它们重新出现的情况下删除它们?我自己编译的.sass文件编译成compiled/t
我想安装一个带有一些身份验证的私有(private)Rubygem服务器。我希望能够使用公共(public)Ubuntu服务器托管内部gem。我读到了http://docs.rubygems.org/read/chapter/18.但是那个没有身份验证-如我所见。然后我读到了https://github.com/cwninja/geminabox.但是当我使用基本身份验证(他们在他们的Wiki中有)时,它会提示从我的服务器获取源。所以。如何制作带有身份验证的私有(private)Rubygem服务器?这是不可能的吗?谢谢。编辑:Geminabox问题。我尝试“捆绑”以安装新的gem..
我有一个对象has_many应呈现为xml的子对象。这不是问题。我的问题是我创建了一个Hash包含此数据,就像解析器需要它一样。但是rails自动将整个文件包含在.........我需要摆脱type="array"和我该如何处理?我没有在文档中找到任何内容。 最佳答案 我遇到了同样的问题;这是我的XML:我在用这个:entries.to_xml将散列数据转换为XML,但这会将条目的数据包装到中所以我修改了:entries.to_xml(root:"Contacts")但这仍然将转换后的XML包装在“联系人”中,将我的XML代码修改为
我在我的项目中添加了一个系统来重置用户密码并通过电子邮件将密码发送给他,以防他忘记密码。昨天它运行良好(当我实现它时)。当我今天尝试启动服务器时,出现以下错误。=>BootingWEBrick=>Rails3.2.1applicationstartingindevelopmentonhttp://0.0.0.0:3000=>Callwith-dtodetach=>Ctrl-CtoshutdownserverExiting/Users/vinayshenoy/.rvm/gems/ruby-1.9.3-p0/gems/actionmailer-3.2.1/lib/action_mailer
在MRIRuby中我可以这样做:deftransferinternal_server=self.init_serverpid=forkdointernal_server.runend#Maketheserverprocessrunindependently.Process.detach(pid)internal_client=self.init_client#Dootherstuffwithconnectingtointernal_server...internal_client.post('somedata')ensure#KillserverProcess.kill('KILL',
我想向我的Controller传递一个参数,它是一个简单的复选框,但我不知道如何在模型的form_for中引入它,这是我的观点:{:id=>'go_finance'}do|f|%>Transferirde:para:Entrada:"input",:placeholder=>"Quantofoiganho?"%>Saída:"output",:placeholder=>"Quantofoigasto?"%>Nota:我想做一个额外的复选框,但我该怎么做,模型中没有一个对象,而是一个要检查的对象,以便在Controller中创建一个ifelse,如果没有检查,请帮助我,非常感谢,谢谢
我已经从我的命令行中获得了一切,所以我可以运行rubymyfile并且它可以正常工作。但是当我尝试从sublime中运行它时,我得到了undefinedmethod`require_relative'formain:Object有人知道我的sublime设置中缺少什么吗?我正在使用OSX并安装了rvm。 最佳答案 或者,您可以只使用“require”,它应该可以正常工作。我认为“require_relative”仅适用于ruby1.9+ 关于ruby-主要:Objectwhenrun
我花了三天的时间用头撞墙,试图弄清楚为什么简单的“rake”不能通过我的规范文件。如果您遇到这种情况:任何文件夹路径中都不要有空格!。严重地。事实上,从现在开始,您命名的任何内容都没有空格。这是我的控制台输出:(在/Users/*****/Desktop/LearningRuby/learn_ruby)$rake/Users/*******/Desktop/LearningRuby/learn_ruby/00_hello/hello_spec.rb:116:in`require':cannotloadsuchfile--hello(LoadError) 最佳