具有特定命名空间的anyAttribute不起作用[英] anyAttribute with specific namespace doesn't work

问题描述

你好,我为此浪费了一整天,找不到解决方案.

我有以下主要架构:

xml version="1.0" encoding="utf-8"?><xs:schema elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema"><xs:element 名称="用户"><xs:complexType><xs:attribute name="FirstName" type="xs:string" 使用="可选" /><xs:anyAttribute 命名空间="http://www.w3.org/2001/AppLog"/></xs:complexType></xs:element></xs:schema>


我想使用"anyAttribute"从特定模式中获取属性,所以我声明了这个辅助模式:

xml version="1.0" encoding="utf-8"?><xs:schema elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema"           targetNamespace="http://www.w3.org/2001/AppLog"><xs:attribute name="SystemUsers" type="xs:string" 默认="abc"/></xs:schema>


然后,我尝试针对此 xml 验证架构:
<br /><用户 UserPreferencesSafe=""abcd"" 系统用户=""abc""/><br />


我通过将 2 个模式添加到模式集 (XMLSchemaSet.Add) 来做到这一点,
然后我将 XMLDocument.Validate 与此模式集一起使用.

我得到:
验证引发错误:不允许使用"SystemUsers"属性.

顺便说一句,如果我使用 anyAttribute namespace="##any",并添加它工作的 2 个模式.但我需要具体一点.

我错过了什么?
谢谢.

推荐答案

看来你误用了complexType:如果没有描述复杂类型内容类型的中间XSD节点,你就不能指定复杂类型的内容,例如sequence,就像在这个例子中:

<xs:element name="ExistingRecord"跨度>><xs:complexType><xs:sequence><xs:element 名称="ExistingFieldElement" type="xs:string" /></xs:sequence><xs:anyAttribute /></xs:complexType></xs:element>


此示例摘自 http://msdn.microsoft.com/en-us/library/aa562055.aspx[^].

我不确定这是否是唯一的问题,但这是第一个引起我注意的问题.

—SA

本文地址:https://www.itbaoku.cn/post/1395073.html