我正在开发一些软件,它可以生成一个用户界面,用于将数据输入到一个非常复杂的 XML 文件中。我有一个输入文本文件,它描述了要呈现给用户的 GUI 字段,以及 XML 文件中元素存储的 XPath。因此,例如,给定以下 XML:
<rootDoc>
<A>
<B someAttr="Hello"/>
</A>
</rootDoc>
我可能会显示一个带有 XPath 为“/A/B/@someAttr”的文本框的 GUI 字段。这样,我知道从哪里读取原始值以显示在文本框中,然后我也知道当用户单击“确定”时将其存储回哪里。这一切都很好,我让它工作。现在的问题 -
有大量的 XSD 描述了 XML 文件的结构、需要哪些字段以及有关字符串字段的数据(即最大字段长度等......)所以,对于我上面非常简单的示例,可能有成为如下的 XSD(如果这不是有效的 XSD,我深表歉意,我只是想弄清楚这一点......):
<schema>
<complexType name="B">
<complexContent>
<attribute name="someAttr" use="required"/>
</complexContent>
</complexType>
<complexType name="A">
<sequence>
<element name="B" type="B" minOccurs="0"/>
</sequence>
</complexType>
</schema>
现在,鉴于我知道 GUI 字段的 XPath 是 /A/B/@someAttr,.NET 中是否有某种方法可以获取与 @someAttr 关联的 XSD 元素?例如,我将使用它来验证该字段的格式是否正确;我还可以根据需要“标记”GUI 字段等。请注意,我不是在寻找如何针对 XSD 验证 XML —— 我希望在显示 GUI 时进行“处理”,以便我可以立即在 GUI 上标记必填字段,或将最大字段长度设置为 XSD 中表示的长度,等等。
请注意,我在 C# 中对此进行了编码,因此将不胜感激 .NET 特定的指针。
编辑:另一种表述方式可能是,“给定一个 XSD,以及一个表示从该 XSD 描述的 XML 中选择的元素或属性的 xpath,有没有办法获取表示模式的 XSD 块对于将由 xpath 表达式选择的元素或属性?”