使用 xerces 从架构中获取元素的默认值 (C++)

发布于 2024-09-09 04:30:13 字数 830 浏览 9 评论 0原文

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

<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 元素,我知道如何通过迭代给定 WidgetDOMElement 的所有子元素并使用来读取它找到 Description 元素后的 DOMElement::getTextContent()

但是,如果特定的 Widget 元素没有 Description 子元素(架构允许),我如何获取默认值(Unknown< /code>) 来自模式?

感谢您的回复, 阿什什

Say I have a schema which defines an element as follows:

<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>

I'm parsing (DOM parser) an XML file that has been validated against this schema using Xerces-C++. If the Description element is present, I know how to read it by iterating through all the child elements of the DOMElement for a given Widget and using DOMElement::getTextContent() upon finding the Description element.

But, if a particular Widget element does not have a Description child element (which is allowed by the schema), how can I fetch the default value (Unknown) from the schema?

Thanks for your responses,
Ashish

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

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

You should be able to use XPath or XQuery to query the schema document to grab any values off of the schema document. Xerces site says it has partial XPath support, and lists Xalan and XQilla if you need more power.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文