Validation XML模式验证
为什么这个xml模式不能验证?VisualStudio说simpleContent标记是无效的标记。如果我删除了该属性,它会说我的限制的基类型在中未定义Validation XML模式验证,validation,xsd,Validation,Xsd,为什么这个xml模式不能验证?VisualStudio说simpleContent标记是无效的标记。如果我删除了该属性,它会说我的限制的基类型在中未定义 @marc_s-我尝试了“代码”按钮,但它一直在预览区域隐藏所有xml。我把空间放在那里,这样它就会出现 xml的最终结果应该如下所示 <person isprocessed="True" >Male</person> 男性 没什么特别的。本质上,我试图创建一个带有属性的simpleType。但是如果我正确理解W
@marc_s-我尝试了“代码”按钮,但它一直在预览区域隐藏所有xml。我把空间放在那里,这样它就会出现
xml的最终结果应该如下所示
<person isprocessed="True" >Male</person>
男性
没什么特别的。本质上,我试图创建一个带有属性的simpleType。但是如果我正确理解W3,属性只能应用于complexTypes。因此,我尝试创建一个包含简单内容的复杂类型。我建议将您的类型分为两种不同的类型。它更清晰,并且正确地验证了:
<xs:complexType name="Person">
<xs:simpleContent>
<xs:extension base="Gender">
<xs:attribute name="isProcessed" type="xs:boolean" />
</xs:extension>
</xs:simpleContent>
</xs:complexType>
<xs:simpleType name="Gender">
<xs:restriction base="xs:string">
<xs:enumeration value="Male" />
<xs:enumeration value="Female" />
</xs:restriction>
</xs:simpleType>
我不知道如何将其表示为单个类型定义。好吧,根据,在XML模式的上下文中,您试图做的是无效的
您只能将
应用于
,而不能应用于
内部的
可以包含扩展基类型的
,但不能包含限制
所以问题是:你想在这里实现什么??目标是什么,要验证的XML应该是什么样子
马克
更新:
好的,为了实现您想要的,请尝试以下操作-定义一个复杂类型(为了拥有该属性),它包含一个简单内容(因此您可以拥有字符串值),并在简单内容中使用xs:扩展名-而不是xs:限制。因此,基本上您定义了一个复杂类型,它扩展了一个简单的字符串内容,并添加了一个属性:
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute name="isprocessed" type="xs:string" />
</xs:extension>
</xs:simpleContent>
</xs:complexType>
为了做到这一点,我只是简单地创建了一个包含您想要的内容的“test.xml”文件,在is周围添加了一个人工的…
(因此它是一个有效的xml文档),然后在其上运行Microsoftxsd.exe
工具,从中创建一个xml模式(您也可以在Visual Studio 2008中执行相同的操作-打开一个xml文件并选择菜单中的“XML>创建模式”)
希望这有帮助!查看您试图使用此架构验证的源xml会很有帮助。此外,此架构文件中可能不需要有空格。例如:应该读取标记而不是
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute name="isprocessed" type="xs:string" />
</xs:extension>
</xs:simpleContent>
</xs:complexType>