当前位置: 首页 > 知识库问答 >
问题:

C#中的XML模式1.1断言

屠杰
2023-03-14

我正在使用以下xml架构验证一些xml文件:

        String xsdMarkup = 
          "[...]

           <xsd:complexType name='connectionType'>
                <xsd:attribute name='SourceElement' type='guidType' use='required' />
                <xsd:attribute name='TargetElement' type='guidType' use='required' />
                <xsd:attribute name='GUID' type='guidType' use='required' />
                <xsd:assert test='@SourceElement == 0' />
           </xsd:complexType>

           [...]
          ";

        XmlSchemaSet schemas = new XmlSchemaSet();
        schemas.Add("", XmlReader.Create(new StringReader(xsdMarkup)));
        Console.WriteLine("Validating doc ...");
        docToValidate.Validate(schemas, (sender, e) =>
        {
            Console.WriteLine(e.Message);
            valid = false;
        }, true);

我只是想引入一些assert标记,以便进行更强大的验证。但这导致了例外情况:

系统Xml。模式。XmlSchemaException:http://www.w3.org/2001/XMLSchema:assert-元素在此上下文中不受支持。

我现在不知道的是。。。

  1. 我在xsd中错误的地方使用了asstrt-元素
  2. http://www.w3.org/2001/XMLSchema-Namespace不支持版本1.1的XML模式,从而断言元素
  3. C#XmlSchemaSet不知道如何处理断言元素

提前感谢帮助!

共有1个答案

厍和颂
2023-03-14

这个XSD模式的NET实现只处理1.0版而不是1.1版-因此它不支持assert

 类似资料:
  • 我试图在XSD中使用以下内容 我知道断言/断言是XML模式1.1的一部分,但不是1.0。然而,我所读到的一切都表明名称空间是相同的:http://www.w3.org/2001/XMLSchema 一个小问题是,我用来编写模式的程序(Microsoft Visual Studio)不识别“断言”元素,说“命名空间中的元素复合物类型”(...)有无效的子元素“断言”。 主要的问题是,当我实际尝试使用

  • 这是我面临的问题,需要一些帮助/指导。 我已经从引擎生成了一条XML消息,需要将其解析为服务。为了做到这一点,我必须将该消息更改为SOAP消息,并在其上插入SAML令牌。我正在尝试使用C#代码执行此操作。下面是我生成的输入消息和预期的输出: 近期产量

  • 如何使用1.1 XML模式定义? 这是我的开始:

  • 我已经想出了如何使用PHP中的XSD模式验证XML文件,但是似乎处理是使用XSD版本1.0完成的。 对于我的情况,我需要将XSD文件视为版本1.1。这样做的主要原因是我想用: 注意,它只能在

  • 我终于想出了如何从XML中获取列表。然而,放心网站并没有详细说明如何为我得到的列表做出断言。我如何断言这部电影有布鲁斯·威利斯作为一个演员,有一个放心的格式,什么时候,然后?是否使用给定()中的列表?

  • 问题内容: 我一直在寻找一套在JSON和XML之间进行转换的例程,但毫无用处。我在Javascript,Java,PHP和Python中找到了这样的例程,但在C或C ++中却找不到。 FWIW,我的json库是json- spirit。我当前正在处理JSON,并希望通过转换层添加XML支持(将传入消息从XML转换为JSON,对其进行处理,将结果转换回XML,然后将其输出)。 有人有指针吗? 我还看