type属性不能出现在simpleType或complexType属性中
我非常(非常)对于XSD和XML来说一般,所以我已经开始通过使用我提议的XML文档中的在线工具生成我的XSD模式。该XML的部分原因是:type属性不能出现在simpleType或complexType属性中
<code base="16">2A</code>
通过该工具生成的XSD是:
<xs:element name="code" type="xs:int">
<xs:complexType>
<xs:attribute name="base" type="xs:int"></xs:attribute>
</xs:complexType>
</xs:element>
这似乎很符合逻辑的我。有一个名为code
的元素,其值为int
,该元素可以具有名称为base
的属性,该值的值也是int
。
然而,当我在Visual Studio中打开此,它抱怨xs:element
标记,因为:
type属性可以不存在与任何简单类型或复合
不幸似乎也是合乎逻辑的,如果该类型是在元素中定义的,为什么complexType
标签会进一步定义类型?
因此,我的问题的关键;如何在XSD中正确定义具有类型化值和类型化属性的元素?
我已经看到这个问题:The type attribute cannot be present with either simpleType or complexType但它只是不同,我有我的nbsb水平的XSD知识,根本不理解答案。
建议的重复Error: The element has a type attribute as well as an anonymous child type是关于具有嵌套元素的属性...此查询是关于一个元素上的一个属性,它不是嵌套的,但在属性和元素上都有类型(如果这是同一件事,我的知识水平太低了,所以我仍然需要进一步解释)
您提到的链接解决了您无法同时指定xs:element/@type="xs:int"
属性和xs:element/xs:complexType
子元素(匿名类型)的直接错误。
剩下的解释是你如何真正能实现自己的目标写一个XSD,将验证XML,
<code base="16">2A</code>
以下XSD将这样做:
<?xml version="1.0" encoding="utf-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="code">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute name="base" type="xs:int"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
</xs:schema>
谢谢。实际上我发现https://www.w3schools.com/xml/schema_complex_text.asp在你发布的同一时间 - 很高兴得到确认,感谢坚持我的努力! – Toby
*关于现在删除了来自OP的评论,表明重复的链接没有回答他的问题...... *您不能在单个元素上同时拥有“type”属性和匿名复杂类型,如重复链接所述。重复链接还显示了如何更正问题:使用命名或匿名类型 - 只是不能同时使用。你不明白哪部分? – kjhughes
@kjhughes您似乎并没有考虑到我所说的XML对于XML来说很新颖。我确实知道“匿名类型”是什么意思,也不知道它是如何提及我所问的。重复的链接显示了如何嵌套一堆类型元素以满足一个人为的例子;它没有提到属性。 – Toby
@kjhughes对不起,我将评论内容移到问题 – Toby