Получить значение по умолчанию для элемента из схемы, используя xerces (C ++) - PullRequest
2 голосов
/ 15 июля 2010

Скажем, у меня есть схема, которая определяет элемент следующим образом:

<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 и используя DOMElement::getTextContent() при обнаружении элемента Description.

Но если конкретный элемент Widget не имеет дочернего элемента Description (что разрешено схемой), как я могу получить значение по умолчанию (Unknown) из схемы?

Спасибо за ваши ответы, Ashish

1 Ответ

1 голос
/ 29 июня 2011

Вы должны иметь возможность использовать XPath или XQuery для запроса документа схемы, чтобы получить любые значения из документа схемы. Сайт Xerces сообщает, что имеет частичную поддержку XPath, и перечисляет Xalan и XQilla, если вам нужно больше энергии.

...