C++ 使用xerces(C+;+;)从架构中获取元素的默认值
假设我有一个模式,它定义了一个元素,如下所示:C++ 使用xerces(C+;+;)从架构中获取元素的默认值,c++,xsd,xerces,xerces-c,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="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
元素,我知道如何通过迭代给定Widget
的domeElement
的所有子元素,并在找到Description
元素后使用domeElement::getTextContent()
来读取它
但是,如果特定的小部件
元素没有描述
子元素(架构允许),如何从架构中获取默认值(未知
)
谢谢你的回复,
Ashish您应该能够使用XPath或XQuery查询模式文档,从模式文档中获取任何值。Xerces网站说它有部分XPath支持,如果您需要更多功能,它会列出Xalan和XQilla。我必须相信您的话,从来没有尝试过XPath或XQuery。但回答时+1:-)