Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
显示可能有效的xml元素值的列表_Xml_Xsd - Fatal编程技术网

显示可能有效的xml元素值的列表

显示可能有效的xml元素值的列表,xml,xsd,Xml,Xsd,我有以下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="

我有以下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
类型2
我期望出现验证错误,但我得到一个: “TypeName”元素无效-值“Type 4”根据其数据类型“Type”无效-枚举约束失败。 元素“Root”具有无效的子元素“element_3”。预期的可能元素列表:“元素_2”

错误消息清楚地显示无效元素(元素_3)并显示可能有效元素(元素_2)的列表。是否可以显示“TypeName”的有效列表

现在,我想要类似于下面的错误消息: “TypeName”元素无效-值“Type 4”根据其数据类型“Type”无效所需的可能值列表:“类型1,类型2”-枚举约束失败。 元素“Root”具有无效的子元素“element_3”。预期的可能元素列表:“元素_2”


是否可能获得上述错误信息(或类似信息)。除了xs:enumeration之外,还有其他限制显示所有有效值吗?

@Richard:谢谢您提供的信息

找不到解决方案,但构建了一个解决方案

private static void ValidationCallBack(object sender, ValidationEventArgs e)
{
    if (e.Exception != null && e.Exception.InnerException != null)
    {
        if (e.Exception.InnerException.Message == "The Enumeration constraint failed.")
        {
            if (((XElement)sender).Name == "TypeName")
            {
                Console.WriteLine("Error, valid Enums are Type 1, Type 2, Type 3...");
            }
        }
    }
    else
    {
        Console.WriteLine("Error.");
    }
}

您使用的是什么XML/XSD工具链?(没有列出如何报告验证错误的标准;每个工具都有自己的方法。)如果我理解正确,您会问我使用的是哪种工具。我使用的是Visual Studio 2012.IIRC VS,它具有XML编辑和XSLT调试功能,但本身不是XSD验证器。ISTR它使用.NET XSD支持,这使您无法控制错误消息的输出。您可以使用名称空间中的类型,但我不确定它们是否足够详细,是否能够获得给定目标元素的可能值。我很想看看你现在怎么样…