我试图验证这个XML文件......如果
<tag1>是"Y"然后<tag2>必须出现
如果<tag1>是"N"则<tag2>不得出现..
<parent>
<a>
<tag1>Y</tag1>
<tag2>sometext</tag2>
</a>
<a>
<tag1>N</tag1>
</a>
</parent>
Run Code Online (Sandbox Code Playgroud)我试过<choice>标签,但似乎没有工作.. :(我得出结论,这个功能在XSD中不可用..
你能指导我至少实现这个的替代方案吗?顺便说一句,我使用的是Visual Studio 2005 ..
您无法使用XSD验证此类内容.
XML模式不是设计的,并不是为了检查"标签内"关系,例如,如果tag1的值为'Y',则必须存在"tag2" - 对不起,这是不可能的.
如果你需要检查这些条件,你必须看看Schematron这样做.
众所周知,这是 XML 模式的一个便利之处。但我很欣赏你尝试该<choice>标签的方法。如果您的条件是这样的,那么它可能会成功:
<tag1>是必需的并且首先出现,则<tag2>不是必需的(并且显示为第二个标签)<tag2>是必需的并且首先出现,则<tag1>不是必需的(并且显示为第二个)代码是:
<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>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1580 次 |
| 最近记录: |