【发布时间】:2011-02-21 03:20:49
【问题描述】:
假设我有以下 XML,我应该如何更新我的 XSD 架构(如下所述)以防止它被验证?
基本上,对于第 3 题,它看起来像是一个单选题,因为标签中只有一个答案。但是标签内必须至少有一个标签,否则没有其他问题可供选择,只能选择正确的问题。
<?xml version="1.0" encoding="utf-8" ?>
<quiz>
<question><!-- single choice question -->
<text>Question 1</text>
<answers>
<answer>Answer 1</answer>
<answer>Answer 2</answer>
<answer>Answer 4</answer>
<correct>
<answer>Answer 3</answer>
</correct>
</answers>
</question>
<question><!-- multiple choice question -->
<text>Question 2</text>
<answers>
<answer>Answer 1</answer>
<answer>Answer 3</answer>
<correct>
<answer>Answer 2</answer>
<answer>Answer 4</answer>
</correct>
</answers>
</question>
<question><!-- doesn't make sense. help me prevent this validation -->
<text>Question 3</text>
<answers>
<correct>
<answer>Some answer</answer>
</correct>
</answers>
</question>
<question><!-- all answers are correct -->
<text>Question 4</text>
<answers>
<correct>
<answer>Answer 1</answer>
<answer>Answer 2</answer>
<answer>Answer 3</answer>
<answer>Answer 4</answer>
</correct>
</answers>
</question>
</quiz>
这是 XSD:
<?xml version="1.0" encoding="utf-8"?>
<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified"
xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="quiz">
<xs:complexType>
<xs:sequence>
<xs:element maxOccurs="unbounded" name="question">
<xs:complexType>
<xs:sequence>
<xs:element name="text" type="xs:string" />
<xs:element name="answers">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" maxOccurs="unbounded"
name="answer" type="xs:string" />
<xs:element name="correct" minOccurs="1" maxOccurs="1">
<xs:complexType>
<xs:sequence>
<xs:element maxOccurs="unbounded" name="answer"
type="xs:string" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
【问题讨论】:
-
您是说您的 XML 不应该验证,因为该问题只有一个答案吗?如果是这样,您的架构已经这样做了。 (使用此架构时,您的 XML 无效。)
-
你是正确的 DevNull,当前的模式就是这样做的。但是我必须更新模式以通过所有 n 个可能的答案选择都是正确答案的情况。现在,当
中仅指定一个答案且没有其他位置时,更新后的架构不起作用。
标签: .net xml xsd xml-validation