使用xerces从模式获取元素的默认值(C ++)

时间:2010-07-15 00:22:50

标签: c++ xsd xerces xerces-c

假设我有一个定义元素的模式,如下所示:

<xsd:element name="Widget" type="tns:WidgetType" />

<xsd:complexType name="WidgetType">
  <xsd:sequence>

    <xsd:element name="Name" type="xsd:normalizedString" maxOccurs="1" minOccurs="1" />
    <xsd:element name="Description" type="xsd:normalizedString" default="Unknown" maxOccurs="1" minOccurs="0" />

  </xsd:sequence>
</xsd:complexType>

我正在解析(DOM解析器)一个XML文件,该文件已使用Xerces-C ++针对此模式进行了验证。如果Description元素存在,我知道如何通过迭代给定DOMElement的{​​{1}}的所有子元素并在找到{Widget时使用DOMElement::getTextContent()来阅读它{1}}元素。

但是,如果特定的Description元素没有Widget子元素(模式允许),我该如何从中获取默认值(Description)模式?

感谢您的回复, 阿希什

1 个答案:

答案 0 :(得分:1)

您应该能够使用XPath或XQuery查询架构文档以从架构文档中获取任何值。 Xerces网站称它具有部分XPath支持,并且如果您需要更多功率,则列出Xalan和XQilla。