2010-07-15 35 views
2

说我有一个模式,其如下定义的一种元素:对元件从模式使用的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的所有子元素对给定的Widget进行迭代并在找到Description元素时使用DOMElement::getTextContent()来读取它。

但是,如果一个特定的Widget元素没有一个Description子元素(这是由架构允许的),我怎么可以获取从架构中的默认值(Unknown)?

感谢您的答复, 阿希什

回答

1

您应该能够使用XPath和XQuery查询模式文档来抓取任何值关模式文档。 Xerces网站表示它具有部分XPath支持,并且如果需要更多功率,则列出Xalan和XQilla。

+0

我必须承认你的话,从未尝试过XPath或XQuery。但用于回答:-) – Praetorian 2011-06-29 01:19:08