<league year="2014" source="www.ico.org"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="champions.xsd">
<sources>
<source metalane="top">
<champion name="wukong">
<popularity>8.18</popularity>
<banrate>0.51</banrate>
</champion>
<champion name="renekton">
<popularity>24.26</popularity>
<banrate>8.69</banrate>
</champion>
<champion name="riven">
<popularity>11.75</popularity>
<banrate>12.85</banrate>
</champion>
<champion name="drmundo">
<popularity>12.11</popularity>
<banrate>64.46</banrate>
</champion>
</source>
<source metalane="mid">
<champion name="ziggs">
<popularity>15.09</popularity>
<banrate>20.56</banrate>
</champion>
<champion name="gragas">
<popularity>22.45</popularity>
<banrate>25.89</banrate>
</champion>
<champion name="kayle">
<popularity>13.63</popularity>
<banrate>9.37</banrate>
</champion>
<champion name="khazix">
<popularity>21.71</popularity>
<banrate>37.28</banrate>
</champion>
</source>
<source metalane="marksman">
<champion name="lucian">
<popularity>18.95</popularity>
<banrate>1.18</banrate>
</champion>
<champion name="ezreal">
<popularity>21.26</popularity>
<banrate>0.11</banrate>
</champion>
<champion name="draven">
<popularity>15.88</popularity>
<banrate>5.85</banrate>
</champion>
<champion name="jinx">
<popularity>34.82</popularity>
<banrate>4.98</banrate>
</champion>
</source>
</sources>
</league>
下面是我的xsd模式文件:
<xs:schema version="1.0"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
elementFormDefault="qualified">
<!-- A year is a 4-digit integer, except the year must be >= 1998. -->
<xs:simpleType name="Tyear">
<xs:restriction base="xs:integer">
<xs:pattern value="\d{4}"/>
<xs:minInclusive value="1998"/>
</xs:restriction>
</xs:simpleType>
<!-- A lane is a string which specifies which location on the map a champion goes -->
<xs:simpleType name="Tmetalane">
<xs:restriction base="xs:string">
</xs:restriction>
</xs:simpleType>
<!-- A name is a string which specifies a champions name -->
<xs:simpleType name="Tname">
<xs:restriction base="xs:string">
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="Tperc">
<xs:restriction base="xs:decimal">
<xs:minExclusive value="0.0"/>
<xs:fractionDigits value="2"/>
</xs:restriction>
</xs:simpleType>
<!-- A definition associates a metalane with a value. -->
<xs:complexType name="Tdefinition">
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute name="metalane" type="Tmetalane"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
<!-- A name definition associates a champion with a value. -->
<xs:complexType name="Tnamedefinition">
<xs:complexContent>
<xs:extension base="xs:string">
<xs:attribute name="name" type="Tname"/>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<!-- league
The root element is *league*.
It contains a sources element which contains multiple source elements.
-->
<xs:element name="league">
<xs:complexType>
<xs:sequence>
<xs:element ref="sources" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute name="year" type="Tyear"/>
<xs:attribute name="source" type="xs:string" use="optional"/>
</xs:complexType>
</xs:element>
<!-- sources
The *sources* element defines multiple metalanes which
contain champion information regarding that lane.
-->
<xs:element name="sources">
<xs:complexType>
<xs:sequence>
<xs:element name="source" type="Tdefinition" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
<xs:unique name="metalanes">
<xs:selector xpath="source"/>
<xs:field xpath="@metalane"/>
</xs:unique>
</xs:element>
<!-- source
The *source* element contains multiple champion elements
-->
<xs:element name="source">
<xs:complexType>
<xs:sequence>
<xs:element name="champion" type="Tnamedefinition" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<!-- champion
The *champion* element contains a banrate and popularity element
-->
<xs:element name="champion">
<xs:complexType>
<xs:sequence>
<xs:element ref="popularity"/>
<xs:element ref="banrate"/>
</xs:sequence>
<xs:attribute name="name" type="Tname"/>
</xs:complexType>
</xs:element>
<!-- A *popularity* element defines how often a champion is picked -->
<xs:element name="popularity">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="Tperc">
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<!-- A *banrate* element defines how often a champion is banned -->
<xs:element name="banrate">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="Tperc">
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
</xs:schema>
您声明了
。不能使用简单类型(xs:string
)作为扩展的基类型。必须是复杂类型。
您将
定义为具有匿名嵌套复杂类型的顶级元素,然后在中定义为
TnameDefinition
。在XML源代码中,我认为您实际上应该声明一个对顶级champion
的引用,并删除type
声明:
<xs:element name="source">
<xs:complexType>
<xs:sequence>
<xs:element ref="champion" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:element>
然后可以删除导致错误的tnameDefinition
的类型声明。
<xs:element name="sources">
<xs:complexType>
<xs:sequence>
<xs:element name="source" type="Tdefinition" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
tdefinition
是一个复杂类型,内容简单,只允许使用属性。可以将属性声明移动到元素定义中的复杂类型:
<xs:element name="source">
<xs:complexType>
<xs:sequence>
<xs:element ref="champion" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute name="metalane" type="Tmetalane" />
</xs:complexType>
</xs:element>
您也不需要tdefinition
,而应该声明source
作为顶级元素的引用。
<xs:element name="sources">
<xs:complexType>
<xs:sequence>
<xs:element ref="source" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
...
</xs:element>
通过这些更改,文档将被验证。但是您也有一堆未使用的类型声明,除非您的其他XML实例与这里显示的实例非常不同,否则您可能不会使用这些声明,并且可以删除这些声明。例如,除非vopulation
和banrate
具有属性,否则可以将它们声明为简单类型:
<xs:element name="popularity" type="Tperc"/>
<xs:element name="banrate" type="Tperc"/>
由于您不在其他任何地方使用它们,您还可以将它们嵌套在champion
定义中。
我假设tmetalane
和tname
是您仍在处理的类型(因为限制已经到位,但为空)。
进行更改并删除未使用的类型,得到的架构如下所示:
<xs:schema version="1.0" xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
<xs:simpleType name="Tyear">
<xs:restriction base="xs:integer">
<xs:pattern value="\d{4}"/>
<xs:minInclusive value="1998"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="Tmetalane">
<xs:restriction base="xs:string">
<!-- to be added -->
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="Tname">
<xs:restriction base="xs:string">
<!-- to be added -->
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="Tperc">
<xs:restriction base="xs:decimal">
<xs:minExclusive value="0.0"/>
<xs:fractionDigits value="2"/>
</xs:restriction>
</xs:simpleType>
<xs:element name="league">
<xs:complexType>
<xs:sequence>
<xs:element ref="sources" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute name="year" type="Tyear"/>
<xs:attribute name="source" type="xs:string" use="optional"/>
</xs:complexType>
</xs:element>
<xs:element name="sources">
<xs:complexType>
<xs:sequence>
<xs:element ref="source" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
<xs:unique name="metalanes">
<xs:selector xpath="source"/>
<xs:field xpath="@metalane"/>
</xs:unique>
</xs:element>
<xs:element name="source">
<xs:complexType>
<xs:sequence>
<xs:element ref="champion" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute name="metalane" type="Tmetalane" />
</xs:complexType>
</xs:element>
<xs:element name="champion">
<xs:complexType>
<xs:sequence>
<xs:element name="popularity" type="Tperc"/>
<xs:element name="banrate" type="Tperc"/>
</xs:sequence>
<xs:attribute name="name" type="Tname"/>
</xs:complexType>
</xs:element>
</xs:schema>
我将Camel与Spring Boot一起使用。在基本上记录消息正文的服务路由实现过程中,我看到了如下所示的错误。 我的路线是: 我在日志正文行中出现错误。 我的问题是预期的行为?为什么Camel不只是调用对象的方法。如果这是预期的行为,那么我需要一个字符串转换器来处理每个新的复杂类型?
我在这段代码上得到这个错误! 错误:无法将预期类型(integer->integer->Integer)->(integer->Integer)->integer->Integer'与实际类型Integer匹配
我试图编写我的第一个XSD . . . XSD如下,不验证。 我在用http://www.utilities-online.info/xsdvalidation/为了验证 我得到了这个错误 无效。错误-第7行,49:org.xml.sax.SAXParseExctive; lineNumber: 7; block nNumber: 49; src-解决.4.2:解决组件“xsd: Hdr”的错误。
我收到此错误: 电动汽车.java:第 6 行:构造函数 类汽车中的汽车不能应用于给定的类型; 我不确定为什么会这样,因为ElectricCar构造函数没有引用超类(除了扩展它的类)。我该如何解决这个问题? 这是我的代码: CarTester.java: 电动汽车.java:(此类的第 6 行出现错误) } 汽车. java: }
我正在遵循这个视频教程(文本版本相同)。我遵循了完全相同的代码,并收到了以下错误: 错误TS2339:属性“Get Employees”在类型“EmployeeService”上不存在
我对Java很陌生,当我试图编译我的代码时,我总是收到这个编译错误: "MyRectangle.java: 3:错误:构造函数类中的矩形矩形不能应用于给定类型;矩形矩形1=新矩形(5.0,10.0,"red");^必需:未找到参数:双精度,双精度,字符串原因:实际和正式参数列表长度不同 MyRectangle.java: 8:错误:构造函数类中的矩形矩形不能应用于给定类型;矩形矩形2=新矩形(3.