我正在构建一个XmlDocument,它必须针对提交者提供的undefined XSD进行验证,但无法显示前缀,因此验证失败。
使用Notepad ++进行验证会引发此错误
ERROR: Element '{urn:hl7-org:v3}value': The type definition is abstract.
我发现失败的行应该是以下
<value code="XXX.YY" codeSystem="2.16.840.1.113883.6.2" codeSystemName="CODE" displayName="DISPLAYNAME" type="CD">
我拥有的模板具有xsi:type =“ CD”属性(请注意尾随的xsi :) 我认为这不是名称空间问题,
xsi名称空间应正确设置
XmlDocument xml = new XmlDocument();
XmlNode cdRoot = xml.CreateNode("element", "ClinicalDocument", "");
XmlAttribute ns = xml.CreateAttribute("xmlns");
ns.Value = "urn:hl7-org:v3";
cdRoot.Attributes.Append(ns);
XmlAttribute att = xml.CreateAttribute("xmlns:xsi");
att.Value = "http://www.w3.org/2001/XMLSchema-instance";
cdRoot.Attributes.Append(att);
因此属性前缀应该。我尝试过
XmlNode value = xml.CreateNode(................
XmlAttribute att = xml.CreateAttribute("xsi:type");
att.Value = "CD";
value.Attributes.Append(att);
然后
XmlAttribute att = xml.CreateAttribute("type");
att.prefix = "xsi"
att.Value = "CD";
value.Attributes.Append(att);
我也尝试在构造函数中创建一个具有名称空间本身的XmlNode:它可以工作,但是将标记引入了整个名称空间,而且也不起作用。