0
我有以下Xml架構。顯示可能有效的xml元素值列表
<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:simpleType name="type">
<xs:restriction base="xs:string">
<xs:enumeration value="Type 1" />
<xs:enumeration value="Type 2" />
<xs:enumeration value="Type 3" />
</xs:restriction>
</xs:simpleType>
<xs:element name="Root">
<xs:complexType>
<xs:sequence>
<xs:element name="Element_1">
<xs:complexType>
<xs:sequence>
<xs:element name="TypeName" type="type" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="Element_2">
<xs:complexType>
<xs:sequence>
<xs:element name="TypeName" type="type" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
我驗證針對上述模式下的XML。
<?xml version="1.0" encoding="utf-8"?>
<Root>
<Element_1>
<TypeName>Type 4</TypeName>
</Element_1>
<Element_3>
<TypeName>Type 2</TypeName>
</Element_3>
</Root>
我期待一個驗證錯誤,我得到一個: 的「類型名」元素是無效 - 未能枚舉約束 - 值「4型」根據其數據類型「類型」是無效的。 元素'Root'具有無效的子元素'Element_3'。預期可能的元素列表:'Element_2'。
錯誤消息清楚地顯示了無效元素(Element_3),並且還顯示可能的有效元素(Element_2)的列表。是否可以顯示'TypeName'的有效列表。
現在,我想要類似如下的錯誤消息: 'TypeName'元素無效 - 'Type 4'值根據其數據類型'type'無效。 預期的可能值列表:'類型1,類型2' - 枚舉約束失敗。 元素'Root'具有無效的子元素'Element_3'。預期可能的元素列表:'Element_2'。
是否有可能獲得上述錯誤信息(或類似)。除xs:enumeration以外的任何其他限制是否顯示所有有效值?
? (沒有列出驗證錯誤報告的標準;每種工具都有其自己的方法。) – Richard 2014-10-07 14:54:27
如果我理解正確,那麼您正在問我正在使用哪種工具。我正在使用Visual Studio 2012. – lerner1225 2014-10-08 07:23:46
IIRC VS具有XML編輯和XSLT調試功能,但本身不是XSD驗證程序。 ISTR使用.NET XSD支持,它不允許您控制錯誤消息的輸出。您可以使用['System.Xml.Schema']中的類型(http://msdn.microsoft.com/zh-cn/library/system.xml.schema%28v=vs.110%29.aspx )名稱空間,但我不確定它們是否足夠詳細以便能夠獲得給定目標元素的可能值。我會感興趣的,看看你如何繼續... – Richard 2014-10-08 08:00:34