XSD:如何根据某个标记的值验证XML文件?
我正在尝试验证此XML文件。。。 如果XSD:如何根据某个标记的值验证XML文件?,xml,schema,xsd,Xml,Schema,Xsd,我正在尝试验证此XML文件。。。 如果 为“Y”,则必须出现 如果为“N”,则不得出现 <parent> <a> <tag1>Y</tag1> <tag2>sometext</tag2> </a> <a> <tag1>N</tag1> </a> </parent> Y 一些文字 N 我尝试了标记,但似乎不起作
为“Y”,则必须出现
为“N”,则
不得出现
<parent>
<a>
<tag1>Y</tag1>
<tag2>sometext</tag2>
</a>
<a>
<tag1>N</tag1>
</a>
</parent>
Y
一些文字
N
标记,但似乎不起作用..:(我得出的结论是,XSD中没有此功能。)
您能至少指导我一些替代方案来实现这一点吗?顺便说一下,我正在使用Visual Studio 2005..您无法用XSD验证类似的东西 XML架构不是设计的,也不是用于检查“标记内”关系,例如“如果tag1的值为“Y”,则必须存在tag2”-抱歉,这是无法完成的
如果需要检查此类条件,则必须查看以执行此操作。不幸的是,使用XSD无法解决此问题。原因是XSD只能用于定义XML文件的结构(语法)。您要做的是将语法与某些语义属性相耦合(某些标记必须有特定的内容,才能决定附近某些标记的语法)。这是一个已知的事实,这是一个XML模式的简单映射。但我希望您尝试
标记的方法。如果您的条件是这样的话,它可能会成功:
是必需的,并首先显示,则不需要
(并显示为第二个标记)
是必需的,并且首先显示,则不需要
(并且显示为第二个)<xs:element name="parent">
<xs:complexType>
<xs:sequence>
<xs:element name="a" maxOccurs="unbounded">
<xs:complexType>
<xs:choice>
<xs:sequence>
<xs:element name="tag1" type="xs:boolean" />
<xs:element name="tag2" type="xs:string" minOccurs="0" />
</xs:sequence>
<xs:sequence>
<xs:element name="tag2" type="xs:string" />
<xs:element name="tag1" type="xs:boolean" minOccurs="0" />
</xs:sequence>
</xs:choice>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
使用XSD是不可能的。但是顺便说一句,如果像她的示例中所示的需求有点满足,您可以解决类似婴儿程序员的问题。您使用什么XML解析器进行验证?我对它知之甚少。.我必须使用visual studio 2005。)我对schematron略知一二。听起来很有趣。但为它开发的工具不多。甚至visual studio也不支持它。。。